From 19776344a39390793451f3079b51e6d3ed022a00 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20LAGACHE?= Date: Thu, 18 Jun 2026 11:36:54 +0200 Subject: [PATCH] feat(onboarding): step-org-create calls real createOrganizationAction --- .../onboarding/steps/step-org-create.tsx | 54 +++++++++++++++---- 1 file changed, 44 insertions(+), 10 deletions(-) diff --git a/src/features/onboarding/steps/step-org-create.tsx b/src/features/onboarding/steps/step-org-create.tsx index a2db48d1..e8203e40 100644 --- a/src/features/onboarding/steps/step-org-create.tsx +++ b/src/features/onboarding/steps/step-org-create.tsx @@ -2,14 +2,18 @@ import { useState } from "react"; import { useOnboarding } from "@onboardjs/react"; +import { useMutation } from "@tanstack/react-query"; +import { toast } from "sonner"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; import { Button } from "@/components/ui/button"; +import { createOrganizationAction } from "@/features/organizations/organization.action"; export const StepOrgCreate = () => { const { next, updateContext, state } = useOnboarding(); - const [name, setName] = useState(""); - const [logoDataUrl, setLogoDataUrl] = useState(undefined); + const existingOrg = state?.context.flowData.org; + const [name, setName] = useState(existingOrg?.name ?? ""); + const [logoDataUrl, setLogoDataUrl] = useState(existingOrg?.logoDataUrl); const onFileChange = (e: React.ChangeEvent) => { const file = e.target.files?.[0]; @@ -22,11 +26,28 @@ export const StepOrgCreate = () => { reader.readAsDataURL(file); }; - const onContinue = async () => { - if (!name.trim()) return; - await updateContext({ flowData: { ...state?.context.flowData, org: { name: name.trim(), logoDataUrl } } }); - await next(); - }; + const mutation = useMutation({ + mutationFn: async () => { + if (!name.trim()) return; + const result = await createOrganizationAction({ name: name.trim() }); + if (!result?.data?.success) { + const data = result?.data; + throw new Error((!data?.success && data?.actionError?.message) ? data.actionError.message : "Failed to create organisation"); + } + const org = result.data.value; + if (!org) throw new Error("Failed to create organisation"); + await updateContext({ + flowData: { + ...state?.context.flowData, + org: { id: org.id, name: org.name, logoDataUrl }, + }, + }); + await next(); + }, + onError: (err: Error) => { + toast.error(err.message); + }, + }); return (
@@ -36,14 +57,27 @@ export const StepOrgCreate = () => {
- setName(e.target.value)} placeholder="Acme Inc." /> + setName(e.target.value)} + placeholder="Acme Inc." + />
- );