import type { ActionArgs, LoaderArgs } from "@remix-run/node"; import { json, redirect } from "@remix-run/node"; import { Form, isRouteErrorResponse, useLoaderData, useRouteError, } from "@remix-run/react"; import invariant from "tiny-invariant"; import { deleteTranslation, getTranslation } from "~/models/translation.server"; import { requireUserId } from "~/session.server"; export const loader = async ({ params, request }: LoaderArgs) => { const userId = await requireUserId(request); invariant(params.translationId, "translationId not found"); const translation = await getTranslation({ id: params.translationId, userId, }); if (!translation) { throw new Response("Not Found", { status: 404 }); } return json({ translation }); }; export const action = async ({ params, request }: ActionArgs) => { const userId = await requireUserId(request); invariant(params.translationId, "translationId not found"); await deleteTranslation({ id: params.translationId, userId }); return redirect("/t"); }; export default function TranslationDetailsPage() { const data = useLoaderData(); return (

To: {data.translation.lang}

{data.translation.text}


Result:

{data.translation.result}

); } export function ErrorBoundary() { const error = useRouteError(); if (error instanceof Error) { return
An unexpected error occurred: {error.message}
; } if (!isRouteErrorResponse(error)) { return

Unknown Error

; } if (error.status === 404) { return
Translation not found
; } return
An unexpected error occurred: {error.statusText}
; }