You've already forked AstralRinth
forked from didirus/AstralRinth
fix: stale modpack permissions data on re-review (#4822)
This commit is contained in:
@@ -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 = {}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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()
|
||||||
|
|||||||
Reference in New Issue
Block a user