"use client"; import {useMutation} from "@tanstack/react-query"; import {Dialog, DialogContent, DialogFooter, DialogHeader, DialogTitle} from "@/components/ui/dialog"; import {Button} from "@/components/ui/button"; import {Form, FormControl, FormField, FormItem, FormLabel, FormMessage, useZodForm} from "@/components/ui/form"; import {Input} from "@/components/ui/input"; import {OrganizationSchema} from "@/components/wrappers/dashboard/organization/organization.schema"; import {createOrganizationAction} from "@/components/wrappers/dashboard/organization/organization.action"; import {useRouter} from "next/navigation"; import {useState} from "react"; import {authClient} from "@/lib/auth/auth-client"; import {toast} from "sonner"; export type createOrganizationModalProps = { open: boolean; onOpenChange: (open: boolean) => void; onSuccess?: () => void; redirect?: string; }; export function CreateOrganizationModal({ open, onOpenChange, onSuccess, redirect = "/dashboard/home" }: createOrganizationModalProps) { const router = useRouter(); const form = useZodForm({ schema: OrganizationSchema, }); const mutation = useMutation({ mutationFn: async (values: OrganizationSchema) => { console.log(values); const result = await createOrganizationAction(values); if (result?.data?.success && result.data.value) { onOpenChange(false); await authClient.organization.setActive({organizationSlug: result.data.value.slug}); onSuccess?.(); toast.success(result.data.actionSuccess?.message || "Organization Created."); form.reset() router.replace(redirect); } else { // @ts-ignore const errorMsg = result?.data?.actionError?.message || result?.data?.actionError?.messageParams?.message || "Failed to create the organization."; toast.error(errorMsg); } }, }); return ( { form.reset() onOpenChange(state) }}> Create a new organization
{ console.log(values); await mutation.mutateAsync(values); }} > ( Name )} />
); }