'use client'; import { useCallback } from 'react'; import type { z } from 'zod'; import { useSignInWithEmailPassword } from '@kit/supabase/hooks/use-sign-in-with-email-password'; import { useCaptchaToken } from '../captcha/client'; import type { PasswordSignInSchema } from '../schemas/password-sign-in.schema'; import { AuthErrorAlert } from './auth-error-alert'; import { PasswordSignInForm } from './password-sign-in-form'; export function PasswordSignInContainer({ onSignIn, }: { onSignIn?: (userId?: string) => unknown; }) { const { captchaToken, resetCaptchaToken } = useCaptchaToken(); const signInMutation = useSignInWithEmailPassword(); const isLoading = signInMutation.isPending; const onSubmit = useCallback( async (credentials: z.infer) => { try { const data = await signInMutation.mutateAsync({ ...credentials, options: { captchaToken }, }); if (onSignIn) { const userId = data?.user?.id; onSignIn(userId); } } catch (e) { // wrong credentials, do nothing } finally { resetCaptchaToken(); } }, [captchaToken, onSignIn, resetCaptchaToken, signInMutation], ); return ( <> ); }