diff --git a/src/lib/types.ts b/src/lib/types.ts index c4009ce..7f3a836 100644 --- a/src/lib/types.ts +++ b/src/lib/types.ts @@ -16,13 +16,25 @@ export type Document = { data: {}; }; -export type Session = Document & { - strongStart: string; +export type DocumentData = { + data: Record; }; +export type Session = Document & + DocumentData< + "session", + { + strongStart: string; + } + >; + export type ISO8601Date = string & { __type: "iso8601date" }; -export type Secret = Document & { - text: string; - discoveredOn: ISO8601Date; -}; +export type Secret = Document & + DocumentData< + "secret", + { + text: string; + discoveredOn: ISO8601Date; + } + >; diff --git a/src/routes/_authenticated/campaigns.$campaignId.tsx b/src/routes/_authenticated/campaigns.$campaignId.tsx index 87eadf2..081a162 100644 --- a/src/routes/_authenticated/campaigns.$campaignId.tsx +++ b/src/routes/_authenticated/campaigns.$campaignId.tsx @@ -1,10 +1,29 @@ -import { createFileRoute } from "@tanstack/react-router"; +import { createFileRoute, Link } from "@tanstack/react-router"; +import { pb } from "@/lib/pocketbase"; +import type { Campaign } from "@/lib/types"; export const Route = createFileRoute("/_authenticated/campaigns/$campaignId")({ + loader: async ({ params }) => { + const record = await pb.collection("campaigns").getOne(params.campaignId); + return { campaign: { id: record.id, name: record.name } as Campaign }; + }, component: RouteComponent, }); function RouteComponent() { - const { campaignId } = Route.useParams(); - return
Hello "/campaigns/{campaignId}"!
; + const { campaign } = Route.useLoaderData(); + return ( +
+
+ + ← Back to campaigns + +
+

{campaign.name}

+ {/* More campaign details can go here */} +
+ ); }