import { ActionFunctionArgs, Form, LoaderFunctionArgs, redirect, useActionData, useLoaderData, } from "react-router-dom"; import { Button, LinkButton } from "@components/Button"; import { ChevronLeftIcon } from "@heroicons/react/16/solid"; import Card from "@components/Card"; import { CardHeader } from "@components/CardHeader"; import { InputFieldWithLabel } from "@components/InputField"; import DashboardNavbar from "@components/Header"; import { User } from "@/hooks/stores"; import { checkAuth } from "@/main"; import Fieldset from "@components/Fieldset"; import api from "../api"; import { CLOUD_API } from "@/ui.config"; interface LoaderData { device: { id: string; name: string; user: { googleId: string } }; user: User; } const action = async ({ params, request }: ActionFunctionArgs) => { const { id } = params; const { name } = Object.fromEntries(await request.formData()); if (!name || name === "") { return { message: "Please specify a name" }; } try { const res = await api.PUT(`${CLOUD_API}/devices/${id}`, { name, }); if (!res.ok) { return { message: "There was an error renaming your device. Please try again." }; } } catch (e) { return { message: "There was an error renaming your device. Please try again." }; } return redirect("/devices"); }; const loader = async ({ params }: LoaderFunctionArgs) => { const user = await checkAuth(); const { id } = params; try { const res = await fetch(`${CLOUD_API}/devices/${id}`, { method: "GET", credentials: "include", mode: "cors", }); const { device } = (await res.json()) as { device: { id: string; name: string; user: { googleId: string } }; }; return { device, user }; } catch (e) { console.error(e); return { devices: [] }; } }; export default function DeviceIdRename() { const { device, user } = useLoaderData() as LoaderData; const error = useActionData() as { message: string }; return (
); } DeviceIdRename.loader = loader; DeviceIdRename.action = action;