import { DatePicker } from '@/components/date-picker'; import { Button } from '@/components/ui/button'; import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle } from '@/components/ui/dialog'; import { Group } from '@/components/ui/group'; import { Input } from '@/components/ui/input'; import { useActiveServerId } from '@/features/app/hooks'; import { useForm } from '@/hooks/use-form'; import { getTRPCClient } from '@/lib/trpc'; import { getRandomString } from '@pulse/shared'; import { memo, useCallback } from 'react'; import { toast } from 'sonner'; import type { TDialogBaseProps } from '../types'; type TCreateInviteDialogProps = TDialogBaseProps & { refetch?: () => void; }; const CreateInviteDialog = memo( ({ refetch, close, isOpen }: TCreateInviteDialogProps) => { const activeServerId = useActiveServerId(); const { r, rrn, values, setTrpcErrors } = useForm({ maxUses: 0, expiresAt: 0, code: getRandomString(24) }); const handleCreate = useCallback(async () => { if (!activeServerId) return; const trpc = getTRPCClient(); try { await trpc.invites.add.mutate({ ...values, serverId: activeServerId }); toast.success('Invite created'); refetch?.(); close(); } catch (error) { setTrpcErrors(error); } }, [close, refetch, setTrpcErrors, values, activeServerId]); return ( Create Server Invite Create a new invitation link for users to join the server.
); } ); export { CreateInviteDialog };