import { useQueryClient } from '@tanstack/react-query'; import { useNavigate } from 'react-router-dom'; import { LibraryConfigWrapped, useBridgeMutation, usePlausibleEvent, useZodForm } from '@sd/client'; import { Dialog, InputField, useDialog, UseDialogProps, z } from '@sd/ui'; const schema = z.object({ name: z .string() .min(1) .refine((v) => !v.startsWith(' ') && !v.endsWith(' '), { message: "Name can't start or end with a space", path: ['name'] }) }); export default (props: UseDialogProps) => { const navigate = useNavigate(); const queryClient = useQueryClient(); const submitPlausibleEvent = usePlausibleEvent(); const createLibrary = useBridgeMutation('library.create'); const form = useZodForm({ schema }); const onSubmit = form.handleSubmit(async (data) => { try { const library = await createLibrary.mutateAsync({ name: data.name }); queryClient.setQueryData(['library.list'], (libraries) => [ ...(libraries || []), library ]); submitPlausibleEvent({ event: { type: 'libraryCreate' } }); navigate(`/${library.uuid}/overview`); } catch (e) { console.error(e); } }); return (
); };