diff --git a/apps/journal/app/routes/routes.$id.tsx b/apps/journal/app/routes/routes.$id.tsx index dc83feb..13bf944 100644 --- a/apps/journal/app/routes/routes.$id.tsx +++ b/apps/journal/app/routes/routes.$id.tsx @@ -1,3 +1,4 @@ +import { useState, useCallback } from "react"; import { data, redirect } from "react-router"; import type { Route } from "./+types/routes.$id"; import { getSessionUser } from "~/lib/auth.server"; @@ -94,7 +95,7 @@ export async function action({ params, request }: Route.ActionArgs) { plannerParams.set("gpx", encodeURIComponent(route.gpx)); } - return redirect(`${plannerUrl}/new?${plannerParams}`); + return data({ redirect: `${plannerUrl}/new?${plannerParams}` }); } return data({ error: "Unknown action" }, { status: 400 }); @@ -107,6 +108,22 @@ export function meta({ data: loaderData }: Route.MetaArgs) { export default function RouteDetailPage({ loaderData }: Route.ComponentProps) { const { route, versions, isOwner } = loaderData; + const [editLoading, setEditLoading] = useState(false); + + const handleEditInPlanner = useCallback(async () => { + setEditLoading(true); + try { + const formData = new FormData(); + formData.set("intent", "edit-in-planner"); + const resp = await fetch(`/routes/${route.id}`, { method: "POST", body: formData }); + const result = await resp.json(); + if (result.redirect) { + window.location.href = result.redirect; + } + } finally { + setEditLoading(false); + } + }, [route.id]); return (
@@ -119,15 +136,13 @@ export default function RouteDetailPage({ loaderData }: Route.ComponentProps) {
{isOwner && (
-
- - -
+