diff --git a/apps/desktop/src/renderer/routes/_authenticated/components/V1ImportModal/ImportPresetsPage/ImportPresetsPage.tsx b/apps/desktop/src/renderer/routes/_authenticated/components/V1ImportModal/ImportPresetsPage/ImportPresetsPage.tsx index 5b6b2bc6a93..988caad0cef 100644 --- a/apps/desktop/src/renderer/routes/_authenticated/components/V1ImportModal/ImportPresetsPage/ImportPresetsPage.tsx +++ b/apps/desktop/src/renderer/routes/_authenticated/components/V1ImportModal/ImportPresetsPage/ImportPresetsPage.tsx @@ -29,8 +29,12 @@ export function ImportPresetsPage({ organizationId }: ImportPresetsPageProps) { [collections], ); - const importedV1Ids = useMemo( - () => new Set(v2Presets.map((p) => p.id)), + const importedAgentIds = useMemo( + () => new Set(v2Presets.flatMap((p) => (p.agentId ? [p.agentId] : []))), + [v2Presets], + ); + const importedNames = useMemo( + () => new Set(v2Presets.flatMap((p) => (p.agentId ? [] : [p.name]))), [v2Presets], ); @@ -56,15 +60,28 @@ export function ImportPresetsPage({ organizationId }: ImportPresetsPageProps) { onRefresh={refresh} isRefreshing={isRefreshing} > - {presets.map((preset, index) => ( - - ))} + {presets.map((preset, index) => { + const linkedAgentId = BUILTIN_AGENT_IDS.has(preset.name) + ? (preset.name as AgentType) + : undefined; + const v2Name = linkedAgentId + ? AGENT_LABELS[linkedAgentId] + : preset.name; + const alreadyImported = linkedAgentId + ? importedAgentIds.has(linkedAgentId) + : importedNames.has(v2Name); + return ( + + ); + })} ); } @@ -72,6 +89,8 @@ export function ImportPresetsPage({ organizationId }: ImportPresetsPageProps) { interface PresetRowProps { preset: TerminalPreset; tabOrder: number; + linkedAgentId: AgentType | undefined; + v2Name: string; alreadyImported: boolean; organizationId: string; } @@ -79,6 +98,8 @@ interface PresetRowProps { function PresetRow({ preset, tabOrder, + linkedAgentId, + v2Name, alreadyImported, organizationId, }: PresetRowProps) { @@ -90,15 +111,9 @@ function PresetRow({ setRunning(true); setErrorMessage(null); try { - const linkedAgentId: AgentType | undefined = BUILTIN_AGENT_IDS.has( - preset.name, - ) - ? (preset.name as AgentType) - : undefined; - const row: V2TerminalPresetRow = { - id: preset.id, - name: linkedAgentId ? AGENT_LABELS[linkedAgentId] : preset.name, + id: crypto.randomUUID(), + name: v2Name, description: preset.description, cwd: preset.cwd, commands: preset.commands, @@ -137,7 +152,7 @@ function PresetRow({ return ( } - primary={preset.name} + primary={v2Name} secondary={preset.description ?? preset.commands[0]} action={action} /> diff --git a/apps/desktop/src/renderer/routes/_authenticated/components/V1ImportModal/V1ImportModal.tsx b/apps/desktop/src/renderer/routes/_authenticated/components/V1ImportModal/V1ImportModal.tsx index d0f4ef9033d..c04aaea9697 100644 --- a/apps/desktop/src/renderer/routes/_authenticated/components/V1ImportModal/V1ImportModal.tsx +++ b/apps/desktop/src/renderer/routes/_authenticated/components/V1ImportModal/V1ImportModal.tsx @@ -14,6 +14,7 @@ import { V1_IMPORT_PAGE_ORDER, } from "renderer/stores/v1-import-modal"; import { MOCK_ORG_ID } from "shared/constants"; +import { IntroPage } from "./components/IntroPage"; import { WelcomePage } from "./components/WelcomePage"; import { ImportPresetsPage } from "./ImportPresetsPage"; import { ImportProjectsPage } from "./ImportProjectsPage"; @@ -51,15 +52,20 @@ export function V1ImportModal() { onInteractOutside={(event) => event.preventDefault()} > - {page === "welcome" ? "Welcome to Superset v2" : "Import from v1"} + {page === "welcome" + ? "Welcome to Superset v2" + : page === "intro" + ? "Let's get you started" + : "Import from v1"} - Bring projects, workspaces, and terminal presets from Superset v1 into - v2. + Let's get your workspaces and projects ported over. Terminal sessions + won't be carried over, but you can still access v1 at any time.
{page === "welcome" && } + {page === "intro" && } {(page === "projects" || page === "workspaces") && !activeHostUrl && (
Host service is not ready yet. This window will populate as soon diff --git a/apps/desktop/src/renderer/routes/_authenticated/components/V1ImportModal/components/IntroPage/IntroPage.tsx b/apps/desktop/src/renderer/routes/_authenticated/components/V1ImportModal/components/IntroPage/IntroPage.tsx new file mode 100644 index 00000000000..f696f66063c --- /dev/null +++ b/apps/desktop/src/renderer/routes/_authenticated/components/V1ImportModal/components/IntroPage/IntroPage.tsx @@ -0,0 +1,13 @@ +export function IntroPage() { + return ( +
+
+ Let's get you started +
+

+ Let's get your workspaces and projects ported over. Terminal sessions + won't be carried over, but you can still access v1 at any time. +

+
+ ); +} diff --git a/apps/desktop/src/renderer/routes/_authenticated/components/V1ImportModal/components/IntroPage/index.ts b/apps/desktop/src/renderer/routes/_authenticated/components/V1ImportModal/components/IntroPage/index.ts new file mode 100644 index 00000000000..5818ce93dae --- /dev/null +++ b/apps/desktop/src/renderer/routes/_authenticated/components/V1ImportModal/components/IntroPage/index.ts @@ -0,0 +1 @@ +export { IntroPage } from "./IntroPage"; diff --git a/apps/desktop/src/renderer/routes/_authenticated/components/V1ImportModal/components/WelcomePage/WelcomePage.tsx b/apps/desktop/src/renderer/routes/_authenticated/components/V1ImportModal/components/WelcomePage/WelcomePage.tsx index dda654d2eb9..74cd443566b 100644 --- a/apps/desktop/src/renderer/routes/_authenticated/components/V1ImportModal/components/WelcomePage/WelcomePage.tsx +++ b/apps/desktop/src/renderer/routes/_authenticated/components/V1ImportModal/components/WelcomePage/WelcomePage.tsx @@ -26,10 +26,6 @@ export function WelcomePage() {
Welcome to Superset v2
-

- Bring your v1 projects, workspaces, and terminal presets over. Import - each one with a single click — nothing happens automatically. -

); diff --git a/apps/desktop/src/renderer/stores/v1-import-modal.ts b/apps/desktop/src/renderer/stores/v1-import-modal.ts index 50ed7408d87..5658a756bc6 100644 --- a/apps/desktop/src/renderer/stores/v1-import-modal.ts +++ b/apps/desktop/src/renderer/stores/v1-import-modal.ts @@ -1,10 +1,16 @@ import { create } from "zustand"; import { devtools } from "zustand/middleware"; -export type V1ImportPage = "welcome" | "projects" | "workspaces" | "presets"; +export type V1ImportPage = + | "welcome" + | "intro" + | "projects" + | "workspaces" + | "presets"; export const V1_IMPORT_PAGE_ORDER: V1ImportPage[] = [ "welcome", + "intro", "projects", "workspaces", "presets",