'use client'; import type { FormEventHandler } from 'react'; import { useCallback } from 'react'; import { useTranslation } from 'react-i18next'; import { toast } from 'sonner'; import { useSignInWithOtp } from '@kit/supabase/hooks/use-sign-in-with-otp'; import { Alert, AlertDescription } from '@kit/ui/alert'; import { Button } from '@kit/ui/button'; import { If } from '@kit/ui/if'; import { Input } from '@kit/ui/input'; import { Label } from '@kit/ui/label'; import { Trans } from '@kit/ui/trans'; export function MagicLinkAuthContainer({ inviteCode, redirectUrl, }: { inviteCode?: string; redirectUrl: string; }) { const { t } = useTranslation(); const signInWithOtpMutation = useSignInWithOtp(); const onSubmit: FormEventHandler = useCallback( (event) => { event.preventDefault(); const target = event.currentTarget; const data = new FormData(target); const email = data.get('email') as string; const queryParams = inviteCode ? `?inviteCode=${inviteCode}` : ''; const emailRedirectTo = [redirectUrl, queryParams].join(''); const promise = signInWithOtpMutation.mutateAsync({ email, options: { emailRedirectTo, }, }); toast.promise(promise, { loading: t('auth:sendingEmailLink'), success: t(`auth:sendLinkSuccessToast`), error: t(`auth:errors.link`), }); }, [inviteCode, redirectUrl, signInWithOtpMutation, t], ); if (signInWithOtpMutation.data) { return ( ); } return (
); }