import { ActionFunctionArgs, Form, redirect, useActionData } from "react-router-dom"; import { useState } from "react"; import { LuEye, LuEyeOff } from "react-icons/lu"; import SimpleNavbar from "@components/SimpleNavbar"; import GridBackground from "@components/GridBackground"; import Container from "@components/Container"; import Fieldset from "@components/Fieldset"; import { InputFieldWithLabel } from "@components/InputField"; import { Button } from "@components/Button"; import LogoBlueIcon from "@/assets/logo-blue.png"; import LogoWhiteIcon from "@/assets/logo-white.svg"; import { DEVICE_API } from "@/ui.config"; import api from "../api"; import ExtLink from "../components/ExtLink"; import { DeviceStatus } from "./welcome-local"; const loader = async () => { const res = await api .GET(`${DEVICE_API}/device/status`) .then(res => res.json() as Promise); if (!res.isSetup) return redirect("/welcome"); const deviceRes = await api.GET(`${DEVICE_API}/device`); if (deviceRes.ok) return redirect("/"); return null; }; const action = async ({ request }: ActionFunctionArgs) => { const formData = await request.formData(); const password = formData.get("password"); try { const response = await api.POST(`${DEVICE_API}/auth/login-local`, { password, }); if (response.ok) { return redirect("/"); } else { return { error: "Invalid password" }; } } catch (error) { console.error(error); return { error: "An error occurred while logging in" }; } }; export default function LoginLocalRoute() { const actionData = useActionData() as { error?: string; success?: boolean }; const [showPassword, setShowPassword] = useState(false); return ( <>

Welcome back to JetKVM

Enter your password to access your JetKVM.

setShowPassword(false)} className="pointer-events-auto" >
) : (
setShowPassword(true)} className="pointer-events-auto" >
) } />
); } LoginLocalRoute.loader = loader; LoginLocalRoute.action = action;