import { Link, useNavigate } from "@tanstack/react-router"; import { Cat } from "lucide-react"; import { toast } from "sonner"; import { Card, CardContent, CardDescription, CardHeader, CardTitle, } from "@/components/ui/card"; import { authClient } from "@/lib/auth-client"; import { useAppForm } from "@/lib/formSutff"; import { Button } from "../../../components/ui/button"; import socket from "../../../lib/socket.io"; export default function LoginForm({ redirectPath }: { redirectPath: string }) { const loginEmail = localStorage.getItem("loginEmail") || ""; const rememberMe = localStorage.getItem("rememberMe") === "true"; const navigate = useNavigate(); const oauthLogin = async () => { await authClient.signIn.oauth2({ providerId: "voidauth", callbackURL: "/lst/app", errorCallbackURL: "/lst/app/login", }); }; const form = useAppForm({ defaultValues: { email: loginEmail, password: "", rememberMe: rememberMe, }, onSubmit: async ({ value }) => { // set remember me incase we want it later if (value.rememberMe) { localStorage.setItem("rememberMe", value.rememberMe.toString()); localStorage.setItem("loginEmail", value.email.toLocaleLowerCase()); } else { localStorage.removeItem("rememberMe"); localStorage.removeItem("loginEmail"); } try { const login = await authClient.signIn.email({ email: value.email, password: value.password, fetchOptions: { onSuccess: () => { navigate({ to: redirectPath ?? "/" }); }, }, }); if (login.error) { toast.error(`${login.error?.message}`); return; } toast.success(`Welcome back ${login.data?.user.name}`); if (login.data) { socket.disconnect(); socket.connect(); } } catch (error) { console.error(error); } }, }); return (
Login to your account{" "}
Enter your username and password below
{ e.preventDefault(); form.handleSubmit(); }} > {(field) => ( )} {(field) => ( )}
{(field) => } Forgot your password?
Login
Don't have an account?{" "} Sign up
); }