diff --git a/apps/frontend/nuxt.config.ts b/apps/frontend/nuxt.config.ts index d496beff95..63821f000c 100644 --- a/apps/frontend/nuxt.config.ts +++ b/apps/frontend/nuxt.config.ts @@ -258,7 +258,6 @@ export default defineNuxtConfig({ }, }, modules: [ - '@pinia/nuxt', 'floating-vue/nuxt', // Sentry causes rollup-plugin-inject errors in dev, only enable in production ...(isProduction() ? ['@sentry/nuxt/module'] : []), diff --git a/apps/frontend/package.json b/apps/frontend/package.json index 22012b479f..737cdc3ec8 100644 --- a/apps/frontend/package.json +++ b/apps/frontend/package.json @@ -46,7 +46,6 @@ "@modrinth/moderation": "workspace:*", "@modrinth/ui": "workspace:*", "@modrinth/utils": "workspace:*", - "@pinia/nuxt": "^0.11.3", "@sentry/nuxt": "^10.33.0", "@tanstack/vue-query": "^5.90.7", "@types/three": "^0.172.0", @@ -69,8 +68,6 @@ "lru-cache": "^11.2.4", "markdown-it": "14.1.0", "pathe": "^1.1.2", - "pinia": "^3.0.0", - "pinia-plugin-persistedstate": "^4.4.1", "prettier": "^3.6.2", "qrcode.vue": "^3.4.0", "semver": "^7.5.4", diff --git a/apps/frontend/src/components/ui/moderation/ModerationReportCard.vue b/apps/frontend/src/components/ui/moderation/ModerationReportCard.vue index ef77f3146f..6b2ab8da6d 100644 --- a/apps/frontend/src/components/ui/moderation/ModerationReportCard.vue +++ b/apps/frontend/src/components/ui/moderation/ModerationReportCard.vue @@ -273,7 +273,7 @@ async function closeReport(reply = false) { closed: true, }, }) - updateThread(props.report.thread) + await refreshReportCaches() didCloseReport.value = true } catch (err: any) { addNotification({ @@ -292,7 +292,7 @@ async function reopenReport() { closed: false, }, }) - updateThread(props.report.thread) + await refreshReportCaches() didCloseReport.value = false } catch (err: any) { addNotification({ @@ -309,6 +309,18 @@ const formatDateTime = useFormatDateTime({ dateStyle: 'long', }) +async function refreshReportCaches() { + await Promise.allSettled([refreshThread(), refreshNuxtData('new-moderation-reports')]) +} + +async function refreshThread() { + const threadId = props.report.thread?.id ?? props.report.thread_id + if (!threadId) return + + const thread = await useBaseFetch(`thread/${threadId}`) + updateThread(thread) +} + function updateThread(newThread: any) { if (props.report.thread) { Object.assign(props.report.thread, newThread) diff --git a/apps/frontend/src/components/ui/moderation/ModerationTechRevCard.vue b/apps/frontend/src/components/ui/moderation/ModerationTechRevCard.vue index 97e83c06ff..17a7f96f9e 100644 --- a/apps/frontend/src/components/ui/moderation/ModerationTechRevCard.vue +++ b/apps/frontend/src/components/ui/moderation/ModerationTechRevCard.vue @@ -435,6 +435,8 @@ async function batchMarkRemaining(verdict: 'safe' | 'unsafe') { backToFileList() } } + + emit('refetch') } catch (error) { console.error('Failed to batch update:', error) addNotification({ @@ -534,6 +536,8 @@ async function updateDetailStatus(detailId: string, verdict: 'safe' | 'unsafe') text: `This issue has been flagged as malicious.${otherText}`, }) } + + emit('refetch') } catch (error) { console.error('Failed to update detail status:', error) addNotification({ diff --git a/apps/frontend/src/components/ui/moderation/checklist/ModerationChecklist.vue b/apps/frontend/src/components/ui/moderation/checklist/ModerationChecklist.vue index 29e525a906..1b737d9e5c 100644 --- a/apps/frontend/src/components/ui/moderation/checklist/ModerationChecklist.vue +++ b/apps/frontend/src/components/ui/moderation/checklist/ModerationChecklist.vue @@ -79,13 +79,13 @@
@@ -112,13 +112,13 @@
@@ -131,9 +131,9 @@

You are done moderating this project! -