fix: stale modpack permissions data on re-review (#4822)

This commit is contained in:
Calum H.
2025-11-27 17:15:10 +00:00
committed by GitHub
parent dfe087df20
commit 8592761493
2 changed files with 23 additions and 1 deletions

View File

@@ -85,6 +85,7 @@
<ModpackPermissionsFlow <ModpackPermissionsFlow
v-model="modpackJudgements" v-model="modpackJudgements"
:project-id="project.id" :project-id="project.id"
:project-updated="project.updated"
@complete="handleModpackPermissionsComplete" @complete="handleModpackPermissionsComplete"
/> />
</div> </div>
@@ -446,6 +447,11 @@ function resetProgress() {
localStorage.removeItem(`modpack-permissions-${props.project.id}`) localStorage.removeItem(`modpack-permissions-${props.project.id}`)
localStorage.removeItem(`modpack-permissions-index-${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 modpackPermissionsComplete.value = false
modpackJudgements.value = {} modpackJudgements.value = {}
@@ -1331,6 +1337,11 @@ function clearProjectLocalStorage() {
localStorage.removeItem(`moderation-actions-${props.project.slug}`) localStorage.removeItem(`moderation-actions-${props.project.slug}`)
localStorage.removeItem(`moderation-inputs-${props.project.slug}`) localStorage.removeItem(`moderation-inputs-${props.project.slug}`)
localStorage.removeItem(`moderation-stage-${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 = {} actionStates.value = {}
} }

View File

@@ -161,6 +161,7 @@ import { computed, onMounted, ref, watch } from 'vue'
const props = defineProps<{ const props = defineProps<{
projectId: string projectId: string
projectUpdated: string
modelValue?: ModerationJudgements modelValue?: ModerationJudgements
}>() }>()
@@ -202,6 +203,10 @@ const permanentNoFiles = useSessionStorage<ModerationModpackItem[]>(
}, },
}, },
) )
const cachedProjectUpdated = useSessionStorage<string | null>(
`modpack-permissions-updated-${props.projectId}`,
null,
)
const currentIndex = ref(0) const currentIndex = ref(0)
const fileApprovalTypes: ModerationModpackPermissionApprovalType[] = [ const fileApprovalTypes: ModerationModpackPermissionApprovalType[] = [
@@ -363,11 +368,13 @@ async function fetchModPackData(): Promise<void> {
} }
modPackData.value = sortedData modPackData.value = sortedData
cachedProjectUpdated.value = props.projectUpdated
persistAll() persistAll()
} catch (error) { } catch (error) {
console.error('Failed to fetch modpack data:', error) console.error('Failed to fetch modpack data:', error)
modPackData.value = [] modPackData.value = []
permanentNoFiles.value = [] permanentNoFiles.value = []
cachedProjectUpdated.value = props.projectUpdated
persistAll() persistAll()
} }
} }
@@ -457,7 +464,10 @@ function getJudgements(): ModerationJudgements {
onMounted(() => { onMounted(() => {
loadPersistedData() loadPersistedData()
if (!modPackData.value) {
const isStale = cachedProjectUpdated.value !== props.projectUpdated
if (!modPackData.value || isStale) {
fetchModPackData() fetchModPackData()
} }
}) })
@@ -477,6 +487,7 @@ watch(
() => props.projectId, () => props.projectId,
() => { () => {
clearPersistedData() clearPersistedData()
cachedProjectUpdated.value = null
loadPersistedData() loadPersistedData()
if (!modPackData.value) { if (!modPackData.value) {
fetchModPackData() fetchModPackData()