Removes Tanstack Query

This commit is contained in:
2025-07-15 10:53:28 -07:00
parent 8f96062058
commit 762306023b
8 changed files with 85 additions and 249 deletions

View File

@@ -1,11 +1,10 @@
import { useCallback } from "react";
import { useCallback, useEffect, useState } from "react";
import { createFileRoute, Link } from "@tanstack/react-router";
import { pb } from "@/lib/pocketbase";
import { SessionRow } from "@/components/documents/session/SessionRow";
import { Button } from "@headlessui/react";
import { useQueryClient, useSuspenseQuery } from "@tanstack/react-query";
import { Loader } from "@/components/Loader";
import type { Relationship } from "@/lib/types";
import type { Campaign, Relationship, Session } from "@/lib/types";
export const Route = createFileRoute(
"/_app/_authenticated/campaigns/$campaignId",
@@ -15,14 +14,15 @@ export const Route = createFileRoute(
});
function RouteComponent() {
const queryClient = useQueryClient();
const params = Route.useParams();
const {
data: { campaign, sessions },
} = useSuspenseQuery({
queryKey: ["campaign"],
queryFn: async () => {
const [loading, setLoading] = useState(true);
const [campaign, setCampaign] = useState<Campaign | null>(null);
const [sessions, setSessions] = useState<Session[]>([]);
useEffect(() => {
async function fetchData() {
setLoading(true);
const campaign = await pb
.collection("campaigns")
.getOne(params.campaignId);
@@ -31,14 +31,17 @@ function RouteComponent() {
filter: `campaign = "${params.campaignId}" && type = 'session'`,
sort: "-created",
});
return {
campaign,
sessions,
};
},
});
setSessions(sessions as Session[]);
setCampaign(campaign as Campaign);
setLoading(false);
}
fetchData();
}, [setCampaign, setSessions, setLoading]);
const createNewSession = useCallback(async () => {
if (campaign === null) {
return;
}
// Check for a previous session
const prevSession = await pb
.collection("documents")
@@ -70,10 +73,12 @@ function RouteComponent() {
});
}
}
queryClient.invalidateQueries({ queryKey: ["campaign"] });
}, [campaign]);
if (loading || campaign === null) {
return <Loader />;
}
return (
<div className="max-w-xl mx-auto py-8">
<div className="mb-2">