diff --git a/app/routes/home.tsx b/app/routes/home.tsx index 831860c..ea1bed7 100644 --- a/app/routes/home.tsx +++ b/app/routes/home.tsx @@ -1,5 +1,8 @@ import React, { useRef, useEffect, useCallback, useState } from "react"; import type { PlayerRef, CallbackListener } from "@remotion/player"; +import { redirect, useLoaderData, type LoaderFunctionArgs } from "react-router"; +import axios from "axios"; +import { requireUser } from "~/utils/auth.server"; import { Play, Pause, @@ -31,7 +34,6 @@ import { Switch } from "~/components/ui/switch"; import { Label } from "~/components/ui/label"; import { Input } from "~/components/ui/input"; import { ResizablePanelGroup, ResizablePanel, ResizableHandle } from "~/components/ui/resizable"; -import axios from "axios"; import { toast } from "sonner"; // Hooks @@ -59,7 +61,15 @@ interface Message { timestamp: Date; } + +export async function loader({ request }: LoaderFunctionArgs) { + const res = await requireUser(request); + if (res.status !== 200) throw redirect("/login"); + return { user: res.data }; +} + export default function TimelineEditor() { + const { user } = useLoaderData(); const containerRef = useRef(null); const playerRef = useRef(null); const fileInputRef = useRef(null); @@ -338,7 +348,7 @@ export default function TimelineEditor() { } const timelineState = getTimelineState(); - await axios.put(`/ai/api/api/projects/${encodeURIComponent(id)}`, timelineState, { + await axios.put(`/ai/api/projects/${encodeURIComponent(id)}`, timelineState, { withCredentials: true, }); @@ -756,7 +766,7 @@ export default function TimelineEditor() { {}} /> diff --git a/app/routes/projects.tsx b/app/routes/projects.tsx index 3098b8b..f01e272 100644 --- a/app/routes/projects.tsx +++ b/app/routes/projects.tsx @@ -58,7 +58,7 @@ export async function loader({ request }: LoaderFunctionArgs) { if (res.status !== 200) throw redirect("/login"); const { origin } = new URL(request.url); - const projectsRes = await axios.get<{ projects: Project[] }>(`${origin}/ai/api/api/projects`, { + const projectsRes = await axios.get<{ projects: Project[] }>(`${origin}/ai/api/projects`, { headers: { Cookie: request.headers.get("Cookie") }, });