From 8592761493ea85ed505fa07822b15830057ba9a8 Mon Sep 17 00:00:00 2001 From: "Calum H." Date: Thu, 27 Nov 2025 17:15:10 +0000 Subject: [PATCH] fix: stale modpack permissions data on re-review (#4822) --- .../ui/moderation/checklist/ModerationChecklist.vue | 11 +++++++++++ .../moderation/checklist/ModpackPermissionsFlow.vue | 13 ++++++++++++- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/apps/frontend/src/components/ui/moderation/checklist/ModerationChecklist.vue b/apps/frontend/src/components/ui/moderation/checklist/ModerationChecklist.vue index 2b427934..6d8135de 100644 --- a/apps/frontend/src/components/ui/moderation/checklist/ModerationChecklist.vue +++ b/apps/frontend/src/components/ui/moderation/checklist/ModerationChecklist.vue @@ -85,6 +85,7 @@ @@ -446,6 +447,11 @@ function resetProgress() { localStorage.removeItem(`modpack-permissions-${props.project.id}`) localStorage.removeItem(`modpack-permissions-index-${props.project.id}`) + + sessionStorage.removeItem(`modpack-permissions-data-${props.project.id}`) + sessionStorage.removeItem(`modpack-permissions-permanent-no-${props.project.id}`) + sessionStorage.removeItem(`modpack-permissions-updated-${props.project.id}`) + modpackPermissionsComplete.value = false modpackJudgements.value = {} @@ -1331,6 +1337,11 @@ function clearProjectLocalStorage() { localStorage.removeItem(`moderation-actions-${props.project.slug}`) localStorage.removeItem(`moderation-inputs-${props.project.slug}`) localStorage.removeItem(`moderation-stage-${props.project.slug}`) + + sessionStorage.removeItem(`modpack-permissions-data-${props.project.id}`) + sessionStorage.removeItem(`modpack-permissions-permanent-no-${props.project.id}`) + sessionStorage.removeItem(`modpack-permissions-updated-${props.project.id}`) + actionStates.value = {} } diff --git a/apps/frontend/src/components/ui/moderation/checklist/ModpackPermissionsFlow.vue b/apps/frontend/src/components/ui/moderation/checklist/ModpackPermissionsFlow.vue index 8cdbdbe1..4f96a4b7 100644 --- a/apps/frontend/src/components/ui/moderation/checklist/ModpackPermissionsFlow.vue +++ b/apps/frontend/src/components/ui/moderation/checklist/ModpackPermissionsFlow.vue @@ -161,6 +161,7 @@ import { computed, onMounted, ref, watch } from 'vue' const props = defineProps<{ projectId: string + projectUpdated: string modelValue?: ModerationJudgements }>() @@ -202,6 +203,10 @@ const permanentNoFiles = useSessionStorage( }, }, ) +const cachedProjectUpdated = useSessionStorage( + `modpack-permissions-updated-${props.projectId}`, + null, +) const currentIndex = ref(0) const fileApprovalTypes: ModerationModpackPermissionApprovalType[] = [ @@ -363,11 +368,13 @@ async function fetchModPackData(): Promise { } modPackData.value = sortedData + cachedProjectUpdated.value = props.projectUpdated persistAll() } catch (error) { console.error('Failed to fetch modpack data:', error) modPackData.value = [] permanentNoFiles.value = [] + cachedProjectUpdated.value = props.projectUpdated persistAll() } } @@ -457,7 +464,10 @@ function getJudgements(): ModerationJudgements { onMounted(() => { loadPersistedData() - if (!modPackData.value) { + + const isStale = cachedProjectUpdated.value !== props.projectUpdated + + if (!modPackData.value || isStale) { fetchModPackData() } }) @@ -477,6 +487,7 @@ watch( () => props.projectId, () => { clearPersistedData() + cachedProjectUpdated.value = null loadPersistedData() if (!modPackData.value) { fetchModPackData()