|
@@ -30,7 +30,7 @@ import { defineStep } from "~/composables/step-components"
|
|
|
|
|
|
import { useI18n } from "~/composables/i18n"
|
|
|
import { useToast } from "~/composables/toast"
|
|
|
-import { appendRESTCollections, restCollections$ } from "~/newstore/collections"
|
|
|
+import { restCollections$ } from "~/newstore/collections"
|
|
|
import MyCollectionImport from "~/components/importExport/ImportExportSteps/MyCollectionImport.vue"
|
|
|
|
|
|
import IconFolderPlus from "~icons/lucide/folder-plus"
|
|
@@ -47,13 +47,14 @@ import { getTeamCollectionJSON } from "~/helpers/backend/helpers"
|
|
|
|
|
|
import { platform } from "~/platform"
|
|
|
|
|
|
-import { initializeDownloadCollection } from "~/helpers/import-export/export"
|
|
|
+import { initializeDownloadFile } from "~/helpers/import-export/export"
|
|
|
import { gistExporter } from "~/helpers/import-export/export/gist"
|
|
|
-import { myCollectionsExporter } from "~/helpers/import-export/export/myCollections"
|
|
|
import { teamCollectionsExporter } from "~/helpers/import-export/export/teamCollections"
|
|
|
|
|
|
import { GistSource } from "~/helpers/import-export/import/import-sources/GistSource"
|
|
|
import { ImporterOrExporter } from "~/components/importExport/types"
|
|
|
+import { useService } from "dioc/vue"
|
|
|
+import { NewWorkspaceService } from "~/services/new-workspace"
|
|
|
import { TeamWorkspace } from "~/services/workspace.service"
|
|
|
|
|
|
const t = useI18n()
|
|
@@ -84,15 +85,43 @@ const currentUser = useReadonlyStream(
|
|
|
|
|
|
const myCollections = useReadonlyStream(restCollections$, [])
|
|
|
|
|
|
+const workspaceService = useService(NewWorkspaceService)
|
|
|
+
|
|
|
+const activeWorkspaceHandle = workspaceService.activeWorkspaceHandle
|
|
|
+
|
|
|
const showImportFailedError = () => {
|
|
|
toast.error(t("import.failed"))
|
|
|
}
|
|
|
|
|
|
const handleImportToStore = async (collections: HoppCollection[]) => {
|
|
|
- const importResult =
|
|
|
- props.collectionsType.type === "my-collections"
|
|
|
- ? await importToPersonalWorkspace(collections)
|
|
|
- : await importToTeamsWorkspace(collections)
|
|
|
+ if (props.collectionsType.type === "my-collections") {
|
|
|
+ if (!activeWorkspaceHandle.value) {
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ const collectionHandleResult = await workspaceService.importRESTCollections(
|
|
|
+ activeWorkspaceHandle.value,
|
|
|
+ collections
|
|
|
+ )
|
|
|
+
|
|
|
+ if (E.isLeft(collectionHandleResult)) {
|
|
|
+ // INVALID_WORKSPACE_HANDLE
|
|
|
+ return toast.error(t("import.failed"))
|
|
|
+ }
|
|
|
+
|
|
|
+ const resultHandle = collectionHandleResult.right
|
|
|
+
|
|
|
+ if (resultHandle.value.type === "invalid") {
|
|
|
+ // WORKSPACE_INVALIDATED
|
|
|
+ }
|
|
|
+
|
|
|
+ toast.success(t("state.file_imported"))
|
|
|
+ emit("hide-modal")
|
|
|
+
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ const importResult = await importToTeamsWorkspace(collections)
|
|
|
|
|
|
if (E.isRight(importResult)) {
|
|
|
toast.success(t("state.file_imported"))
|
|
@@ -102,13 +131,6 @@ const handleImportToStore = async (collections: HoppCollection[]) => {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-const importToPersonalWorkspace = (collections: HoppCollection[]) => {
|
|
|
- appendRESTCollections(collections)
|
|
|
- return E.right({
|
|
|
- success: true,
|
|
|
- })
|
|
|
-}
|
|
|
-
|
|
|
function translateToTeamCollectionFormat(x: HoppCollection) {
|
|
|
const folders: HoppCollection[] = (x.folders ?? []).map(
|
|
|
translateToTeamCollectionFormat
|
|
@@ -388,28 +410,34 @@ const HoppMyCollectionsExporter: ImporterOrExporter = {
|
|
|
applicableTo: ["personal-workspace"],
|
|
|
isLoading: isHoppMyCollectionExporterInProgress,
|
|
|
},
|
|
|
- action: () => {
|
|
|
+ action: async () => {
|
|
|
if (!myCollections.value.length) {
|
|
|
return toast.error(t("error.no_collections_to_export"))
|
|
|
}
|
|
|
|
|
|
+ if (!activeWorkspaceHandle.value) {
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
isHoppMyCollectionExporterInProgress.value = true
|
|
|
|
|
|
- const message = initializeDownloadCollection(
|
|
|
- myCollectionsExporter(myCollections.value),
|
|
|
- "Collections"
|
|
|
+ const result = await workspaceService.exportRESTCollections(
|
|
|
+ activeWorkspaceHandle.value,
|
|
|
+ myCollections.value
|
|
|
)
|
|
|
|
|
|
- if (E.isRight(message)) {
|
|
|
- toast.success(t(message.right))
|
|
|
-
|
|
|
- platform.analytics?.logEvent({
|
|
|
- type: "HOPP_EXPORT_COLLECTION",
|
|
|
- exporter: "json",
|
|
|
- platform: "rest",
|
|
|
- })
|
|
|
+ if (E.isLeft(result)) {
|
|
|
+ // INVALID_WORKSPACE_HANDLE
|
|
|
}
|
|
|
|
|
|
+ toast.success(t("state.download_started"))
|
|
|
+
|
|
|
+ platform.analytics?.logEvent({
|
|
|
+ type: "HOPP_EXPORT_COLLECTION",
|
|
|
+ exporter: "json",
|
|
|
+ platform: "rest",
|
|
|
+ })
|
|
|
+
|
|
|
isHoppMyCollectionExporterInProgress.value = false
|
|
|
},
|
|
|
}
|
|
@@ -443,10 +471,7 @@ const HoppTeamCollectionsExporter: ImporterOrExporter = {
|
|
|
return toast.error(t("error.no_collections_to_export"))
|
|
|
}
|
|
|
|
|
|
- initializeDownloadCollection(
|
|
|
- exportCollectionsToJSON,
|
|
|
- "team-collections"
|
|
|
- )
|
|
|
+ initializeDownloadFile(exportCollectionsToJSON, "team-collections")
|
|
|
|
|
|
platform.analytics?.logEvent({
|
|
|
type: "HOPP_EXPORT_COLLECTION",
|