diff --git a/src/app/(admin)/admin/projects/[id]/edit/page.tsx b/src/app/(admin)/admin/projects/[id]/edit/page.tsx index b5e5d95..86af045 100644 --- a/src/app/(admin)/admin/projects/[id]/edit/page.tsx +++ b/src/app/(admin)/admin/projects/[id]/edit/page.tsx @@ -125,14 +125,19 @@ function EditProjectContent({ projectId }: { projectId: string }) { }) // Mutations + const utils = trpc.useUtils() const updateProject = trpc.project.update.useMutation({ onSuccess: () => { + utils.project.get.invalidate({ id: projectId }) + utils.project.list.invalidate() router.push(`/admin/projects/${projectId}`) }, }) const deleteProject = trpc.project.delete.useMutation({ onSuccess: () => { + utils.project.list.invalidate() + utils.round.get.invalidate() router.push('/admin/projects') }, }) diff --git a/src/app/(admin)/admin/projects/import/page.tsx b/src/app/(admin)/admin/projects/import/page.tsx index d067210..d6e86af 100644 --- a/src/app/(admin)/admin/projects/import/page.tsx +++ b/src/app/(admin)/admin/projects/import/page.tsx @@ -28,6 +28,7 @@ import { ArrowLeft, FileSpreadsheet, AlertCircle, Database, FileText } from 'luc function ImportPageContent() { const router = useRouter() + const utils = trpc.useUtils() const searchParams = useSearchParams() const roundIdParam = searchParams.get('round') @@ -175,7 +176,8 @@ function ImportPageContent() { roundId={selectedRoundId} roundName={selectedRound.name} onSuccess={() => { - // Optionally redirect after success + utils.project.list.invalidate() + utils.round.get.invalidate() }} /> @@ -184,7 +186,8 @@ function ImportPageContent() { roundId={selectedRoundId} roundName={selectedRound.name} onSuccess={() => { - // Optionally redirect after success + utils.project.list.invalidate() + utils.round.get.invalidate() }} /> @@ -193,7 +196,8 @@ function ImportPageContent() { roundId={selectedRoundId} roundName={selectedRound.name} onSuccess={() => { - // Optionally redirect after success + utils.project.list.invalidate() + utils.round.get.invalidate() }} /> diff --git a/src/app/(admin)/admin/projects/new/page.tsx b/src/app/(admin)/admin/projects/new/page.tsx index 8eacceb..41ae92f 100644 --- a/src/app/(admin)/admin/projects/new/page.tsx +++ b/src/app/(admin)/admin/projects/new/page.tsx @@ -59,9 +59,12 @@ function NewProjectPageContent() { }) // Create mutation + const utils = trpc.useUtils() const createProject = trpc.project.create.useMutation({ onSuccess: () => { toast.success('Project created successfully') + utils.project.list.invalidate() + utils.round.get.invalidate() router.push(`/admin/projects?round=${selectedRoundId}`) }, onError: (error) => { diff --git a/src/app/(admin)/admin/rounds/[id]/filtering/page.tsx b/src/app/(admin)/admin/rounds/[id]/filtering/page.tsx index 6f1eab1..5f2fd07 100644 --- a/src/app/(admin)/admin/rounds/[id]/filtering/page.tsx +++ b/src/app/(admin)/admin/rounds/[id]/filtering/page.tsx @@ -39,6 +39,7 @@ export default function FilteringDashboardPage({ trpc.filtering.getResultStats.useQuery({ roundId }) const { data: rules } = trpc.filtering.getRules.useQuery({ roundId }) + const utils = trpc.useUtils() const executeRules = trpc.filtering.executeRules.useMutation() const finalizeResults = trpc.filtering.finalizeResults.useMutation() @@ -63,6 +64,8 @@ export default function FilteringDashboardPage({ `Finalized: ${result.passed} passed, ${result.filteredOut} filtered out` ) refetchStats() + utils.project.list.invalidate() + utils.round.get.invalidate({ id: roundId }) } catch (error) { toast.error( error instanceof Error ? error.message : 'Failed to finalize' diff --git a/src/app/(admin)/admin/rounds/[id]/filtering/results/page.tsx b/src/app/(admin)/admin/rounds/[id]/filtering/results/page.tsx index 0a72bd8..2b92c0b 100644 --- a/src/app/(admin)/admin/rounds/[id]/filtering/results/page.tsx +++ b/src/app/(admin)/admin/rounds/[id]/filtering/results/page.tsx @@ -105,6 +105,7 @@ export default function FilteringResultsPage({ perPage, }) + const utils = trpc.useUtils() const overrideResult = trpc.filtering.overrideResult.useMutation() const reinstateProject = trpc.filtering.reinstateProject.useMutation() @@ -127,6 +128,7 @@ export default function FilteringResultsPage({ setOverrideDialog(null) setOverrideReason('') refetch() + utils.project.list.invalidate() } catch { toast.error('Failed to override result') } @@ -137,6 +139,7 @@ export default function FilteringResultsPage({ await reinstateProject.mutateAsync({ roundId, projectId }) toast.success('Project reinstated') refetch() + utils.project.list.invalidate() } catch { toast.error('Failed to reinstate project') } diff --git a/src/app/(admin)/admin/rounds/[id]/page.tsx b/src/app/(admin)/admin/rounds/[id]/page.tsx index ad28a45..617a56e 100644 --- a/src/app/(admin)/admin/rounds/[id]/page.tsx +++ b/src/app/(admin)/admin/rounds/[id]/page.tsx @@ -76,6 +76,8 @@ function RoundDetailContent({ roundId }: { roundId: string }) { const deleteRound = trpc.round.delete.useMutation({ onSuccess: () => { toast.success('Round deleted') + utils.program.list.invalidate() + utils.round.list.invalidate() router.push('/admin/rounds') }, onError: () => {