"use client"; import { zodResolver } from "@hookform/resolvers/zod"; import { useForm } from "react-hook-form"; import { Button } from "@/components/ui/button"; import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage, } from "@/components/ui/form"; import { Input } from "@/components/ui/input"; import { AdminLoginSchema, type AdminLoginInput } from "@/lib/schemas"; import { adminLoginUser } from "@/lib/actions/auth"; import { useToast } from "@/hooks/use-toast"; import { useState } from "react"; import { Loader2, ShieldCheck } from "lucide-react"; // No longer need useRouter for post-login navigation if server action redirects export function AdminLoginForm() { const { toast } = useToast(); const [isLoading, setIsLoading] = useState(false); const form = useForm({ resolver: zodResolver(AdminLoginSchema), defaultValues: { email: "", password: "", }, }); async function onSubmit(values: AdminLoginInput) { setIsLoading(true); try { const result = await adminLoginUser(values); // This action will now redirect on success // If the action returns (i.e., did not redirect), it means there was an error. if (result && result.success === false) { toast({ title: "Admin Login Failed", description: result.message, variant: "destructive", }); } // Successful login will result in a redirect handled by Next.js. // The "Admin Login Successful" toast is removed as the page will change. } catch (error: any) { // Server actions that redirect throw a special error that Next.js catches. if (error.message?.includes('NEXT_REDIRECT')) { // This is an expected error during redirect. } else { toast({ title: "Error", description: error.message || "An unexpected error occurred. Please try again.", variant: "destructive", }); } } finally { setIsLoading(false); } } return (
( Admin Email )} /> ( Admin Password )} /> ); }