import type { ActionArgs, LoaderArgs, V2_MetaFunction } from "@remix-run/node"; import { json } from "@remix-run/node"; import { Form, Link, Outlet, useActionData, useLoaderData, } from "@remix-run/react"; import { updateUser } from "~/models/user.server"; import { requireUser } from "~/session.server"; export const loader = async ({ request }: LoaderArgs) => { const user = await requireUser(request); return json({ user }); }; export const action = async ({ request }: ActionArgs) => { const user = await requireUser(request); const formData = await request.formData(); const openAIKey = formData.get("openAIKey"); if (typeof openAIKey !== "string" || openAIKey.length === 0) { return json( { user: null, errors: { openAIKey: "Open AI Key is required" } }, { status: 400 } ); } const updatedUser = await updateUser(user.email, { openAIKey }); return json( { user: updatedUser, errors: { openAIKey: null } }, { status: 200 } ); }; export const meta: V2_MetaFunction = () => [{ title: "Account | TranslAIte" }]; export default function Account() { const loaderData = useLoaderData(); const actionData = useActionData(); return (

TranslAIte

{actionData?.errors?.openAIKey ? (
{actionData.errors.openAIKey}
) : null}
{actionData?.user?.openAIKey ? (

Account updated!

) : null}
Delete account
); }