From 6f34bdf6b57b1a5ef6e7114787d7db91c8168ed8 Mon Sep 17 00:00:00 2001 From: Anish Sarkar <104695310+AnishSarkar22@users.noreply.github.com> Date: Sun, 12 Jul 2026 20:30:20 +0530 Subject: [PATCH] feat(workspace-dialog): route new workspace from llm_setup and seed query cache --- .../layout/ui/dialogs/CreateWorkspaceDialog.tsx | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/surfsense_web/components/layout/ui/dialogs/CreateWorkspaceDialog.tsx b/surfsense_web/components/layout/ui/dialogs/CreateWorkspaceDialog.tsx index cabe4879a..c7cb00a1f 100644 --- a/surfsense_web/components/layout/ui/dialogs/CreateWorkspaceDialog.tsx +++ b/surfsense_web/components/layout/ui/dialogs/CreateWorkspaceDialog.tsx @@ -28,6 +28,8 @@ import { import { Input } from "@/components/ui/input"; import { Spinner } from "@/components/ui/spinner"; import { trackWorkspaceCreated } from "@/lib/posthog/events"; +import { cacheKeys } from "@/lib/query-client/cache-keys"; +import { queryClient } from "@/lib/query-client/client"; const formSchema = z.object({ name: z.string().min(1, "Name is required"), @@ -67,7 +69,20 @@ export function CreateWorkspaceDialog({ open, onOpenChange }: CreateWorkspaceDia trackWorkspaceCreated(result.id, values.name); - router.push(`/dashboard/${result.id}/new-chat`); + // Seed the gate's query so it resolves without a loader flash, and + // route straight to onboarding vs. new-chat on the first hop. + if (result.llm_setup) { + queryClient.setQueryData( + cacheKeys.modelConnections.setupStatus(result.id), + result.llm_setup + ); + } + const needsSetup = result.llm_setup?.status === "needs_setup"; + router.push( + needsSetup + ? `/dashboard/${result.id}/onboard` + : `/dashboard/${result.id}/new-chat` + ); } catch (error) { console.error("Failed to create workspace:", error); setIsSubmitting(false);