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:
@@ -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')
|
||||
},
|
||||
})
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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) => {
|
||||
|
||||
Reference in New Issue
Block a user