import type { BatchUpsertResult } from "@yaakapp-internal/models"; import { Button } from "../components/core/Button"; import { FormattedError } from "../components/core/FormattedError"; import { VStack } from "../components/core/Stacks"; import { ImportDataDialog } from "../components/ImportDataDialog"; import { activeWorkspaceAtom } from "../hooks/useActiveWorkspace"; import { createFastMutation } from "../hooks/useFastMutation"; import { showAlert } from "./alert"; import { showDialog } from "./dialog"; import { jotaiStore } from "./jotai"; import { pluralizeCount } from "./pluralize"; import { router } from "./router"; import { invokeCmd } from "./tauri"; export const importData = createFastMutation({ mutationKey: ["import_data"], onError: (err: string) => { showAlert({ id: "import-failed", title: "Import Failed", size: "md", body: {err}, }); }, mutationFn: async () => { return new Promise((resolve, reject) => { showDialog({ id: "import", title: "Import Data", size: "sm", render: ({ hide }) => { const importAndHide = async (filePath: string) => { try { const didImport = await performImport(filePath); if (!didImport) { return; } resolve(); } catch (err) { reject(err); } finally { hide(); } }; return ; }, }); }); }, }); async function performImport(filePath: string): Promise { const activeWorkspace = jotaiStore.get(activeWorkspaceAtom); const imported = await invokeCmd("cmd_import_data", { filePath, workspaceId: activeWorkspace?.id, }); const importedWorkspace = imported.workspaces[0]; showDialog({ id: "import-complete", title: "Import Complete", size: "sm", hideX: true, render: ({ hide }) => { return (
    {imported.workspaces.length > 0 && (
  • {pluralizeCount("Workspace", imported.workspaces.length)}
  • )} {imported.environments.length > 0 && (
  • {pluralizeCount("Environment", imported.environments.length)}
  • )} {imported.folders.length > 0 && (
  • {pluralizeCount("Folder", imported.folders.length)}
  • )} {imported.httpRequests.length > 0 && (
  • {pluralizeCount("HTTP Request", imported.httpRequests.length)}
  • )} {imported.grpcRequests.length > 0 && (
  • {pluralizeCount("GRPC Request", imported.grpcRequests.length)}
  • )} {imported.websocketRequests.length > 0 && (
  • {pluralizeCount("Websocket Request", imported.websocketRequests.length)}
  • )}
); }, }); if (importedWorkspace != null) { const environmentId = imported.environments[0]?.id ?? null; await router.navigate({ to: "/workspaces/$workspaceId", params: { workspaceId: importedWorkspace.id }, search: { environment_id: environmentId }, }); } return true; }