Add cache invalidation to all project/round mutations platform-wide

Mutations for create, update, delete, import, filtering finalize,
override, and reinstate now properly invalidate related queries so
the UI updates without requiring a page refresh.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-02-02 23:36:46 +01:00
parent 56a44049d3
commit db728830d4
6 changed files with 23 additions and 3 deletions

View File

@@ -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')
},
})

View File

@@ -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()
}}
/>
</TabsContent>
@@ -184,7 +186,8 @@ function ImportPageContent() {
roundId={selectedRoundId}
roundName={selectedRound.name}
onSuccess={() => {
// Optionally redirect after success
utils.project.list.invalidate()
utils.round.get.invalidate()
}}
/>
</TabsContent>
@@ -193,7 +196,8 @@ function ImportPageContent() {
roundId={selectedRoundId}
roundName={selectedRound.name}
onSuccess={() => {
// Optionally redirect after success
utils.project.list.invalidate()
utils.round.get.invalidate()
}}
/>
</TabsContent>

View File

@@ -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) => {