From 8ab484a298ebc4fd2865504c6e6bc0ae1e594ed1 Mon Sep 17 00:00:00 2001 From: Prospector <6166773+Prospector@users.noreply.github.com> Date: Fri, 7 Aug 2026 16:00:24 -0700 Subject: [PATCH] add placeholder missing disclosure report type --- .../shared-instance-install-modal/index.vue | 19 ++-------- .../app-frontend/src/locales/da-DK/index.json | 3 -- .../app-frontend/src/locales/de-CH/index.json | 9 ----- .../app-frontend/src/locales/de-DE/index.json | 9 ----- .../app-frontend/src/locales/en-US/index.json | 9 ----- .../src/locales/es-419/index.json | 9 ----- .../app-frontend/src/locales/fr-FR/index.json | 9 ----- .../app-frontend/src/locales/hu-HU/index.json | 9 ----- .../app-frontend/src/locales/it-IT/index.json | 9 ----- .../app-frontend/src/locales/ja-JP/index.json | 9 ----- .../app-frontend/src/locales/ko-KR/index.json | 9 ----- .../app-frontend/src/locales/ms-MY/index.json | 3 -- .../app-frontend/src/locales/nl-NL/index.json | 9 ----- .../app-frontend/src/locales/pl-PL/index.json | 9 ----- .../app-frontend/src/locales/pt-BR/index.json | 9 ----- .../app-frontend/src/locales/ru-RU/index.json | 9 ----- .../app-frontend/src/locales/sv-SE/index.json | 9 ----- .../app-frontend/src/locales/tr-TR/index.json | 9 ----- .../app-frontend/src/locales/uk-UA/index.json | 9 ----- .../app-frontend/src/locales/zh-CN/index.json | 9 ----- .../app-frontend/src/locales/zh-TW/index.json | 9 ----- .../ui/moderation/ModerationReportCard.vue | 13 +++---- .../src/components/ui/report/ReportInfo.vue | 28 +++++++++++++- .../src/components/ui/report/ReportsList.vue | 19 ++++++++-- apps/frontend/src/locales/en-US/index.json | 9 +++++ .../src/pages/moderation/reports/index.vue | 9 ++++- apps/frontend/src/pages/report.vue | 37 ++++++++++++++---- packages/ui/src/locales/en-US/index.json | 18 +++++++++ packages/ui/src/utils/common-messages.ts | 38 +++++++++++++++++++ 29 files changed, 154 insertions(+), 204 deletions(-) diff --git a/apps/app-frontend/src/components/ui/shared-instances/shared-instance-install-modal/index.vue b/apps/app-frontend/src/components/ui/shared-instances/shared-instance-install-modal/index.vue index 9ffa818bcb..af632a9017 100644 --- a/apps/app-frontend/src/components/ui/shared-instances/shared-instance-install-modal/index.vue +++ b/apps/app-frontend/src/components/ui/shared-instances/shared-instance-install-modal/index.vue @@ -251,6 +251,7 @@ import { type ComboboxOption, commonMessages, defineMessages, + formatReportType, injectAuth, injectModrinthClient, injectNotificationManager, @@ -329,9 +330,9 @@ const externalFileRows = computed(() => .sort((left, right) => left.name.localeCompare(right.name)), ) const reportReasonOptions = computed[]>(() => [ - { value: 'malicious', label: formatMessage(messages.maliciousReason) }, - { value: 'inappropriate', label: formatMessage(messages.inappropriateReason) }, - { value: 'spam', label: formatMessage(messages.spamReason) }, + { value: 'malicious', label: formatReportType(formatMessage, 'malicious') }, + { value: 'inappropriate', label: formatReportType(formatMessage, 'inappropriate') }, + { value: 'spam', label: formatReportType(formatMessage, 'spam') }, ]) const canSubmitReport = computed( () => Boolean(preview.value && additionalContext.value.trim()) && !submitLoading.value, @@ -543,18 +544,6 @@ const messages = defineMessages({ id: 'app.modal.install-to-play.report-reason', defaultMessage: 'Which rule does this instance violate?', }, - maliciousReason: { - id: 'app.modal.install-to-play.report-reason.malicious', - defaultMessage: 'Malicious', - }, - inappropriateReason: { - id: 'app.modal.install-to-play.report-reason.inappropriate', - defaultMessage: 'Inappropriate', - }, - spamReason: { - id: 'app.modal.install-to-play.report-reason.spam', - defaultMessage: 'Spam', - }, additionalContext: { id: 'app.modal.install-to-play.additional-context', defaultMessage: 'Additional context', diff --git a/apps/app-frontend/src/locales/da-DK/index.json b/apps/app-frontend/src/locales/da-DK/index.json index c0aa6b0e50..02afec374a 100644 --- a/apps/app-frontend/src/locales/da-DK/index.json +++ b/apps/app-frontend/src/locales/da-DK/index.json @@ -440,9 +440,6 @@ "app.modal.install-to-play.report-image-too-large": { "message": "Filen overskrider 1MiB størrelse begrænsning" }, - "app.modal.install-to-play.report-reason.spam": { - "message": "Spam" - }, "app.modal.install-to-play.shared-instance": { "message": "Delt instance" }, diff --git a/apps/app-frontend/src/locales/de-CH/index.json b/apps/app-frontend/src/locales/de-CH/index.json index c74ea4c9f9..bf398912b5 100644 --- a/apps/app-frontend/src/locales/de-CH/index.json +++ b/apps/app-frontend/src/locales/de-CH/index.json @@ -701,15 +701,6 @@ "app.modal.install-to-play.report-reason": { "message": "Gegen welche Regel verstößt diese Instanz?" }, - "app.modal.install-to-play.report-reason.inappropriate": { - "message": "Unangemessen" - }, - "app.modal.install-to-play.report-reason.malicious": { - "message": "Bösartig" - }, - "app.modal.install-to-play.report-reason.spam": { - "message": "Spam" - }, "app.modal.install-to-play.report-shared-instance-header": { "message": "Geteilte Instanz melden" }, diff --git a/apps/app-frontend/src/locales/de-DE/index.json b/apps/app-frontend/src/locales/de-DE/index.json index aec68c7665..2ac9c1e88b 100644 --- a/apps/app-frontend/src/locales/de-DE/index.json +++ b/apps/app-frontend/src/locales/de-DE/index.json @@ -701,15 +701,6 @@ "app.modal.install-to-play.report-reason": { "message": "Gegen welche Regel verstößt diese Instanz?" }, - "app.modal.install-to-play.report-reason.inappropriate": { - "message": "Unangemessen" - }, - "app.modal.install-to-play.report-reason.malicious": { - "message": "Bösartig" - }, - "app.modal.install-to-play.report-reason.spam": { - "message": "Spam" - }, "app.modal.install-to-play.report-shared-instance-header": { "message": "Geteilte Instanz melden" }, diff --git a/apps/app-frontend/src/locales/en-US/index.json b/apps/app-frontend/src/locales/en-US/index.json index 9b5a674d18..48966b7e93 100644 --- a/apps/app-frontend/src/locales/en-US/index.json +++ b/apps/app-frontend/src/locales/en-US/index.json @@ -704,15 +704,6 @@ "app.modal.install-to-play.report-reason": { "message": "Which rule does this instance violate?" }, - "app.modal.install-to-play.report-reason.inappropriate": { - "message": "Inappropriate" - }, - "app.modal.install-to-play.report-reason.malicious": { - "message": "Malicious" - }, - "app.modal.install-to-play.report-reason.spam": { - "message": "Spam" - }, "app.modal.install-to-play.report-shared-instance-header": { "message": "Report shared instance" }, diff --git a/apps/app-frontend/src/locales/es-419/index.json b/apps/app-frontend/src/locales/es-419/index.json index 967688bdfb..735768c394 100644 --- a/apps/app-frontend/src/locales/es-419/index.json +++ b/apps/app-frontend/src/locales/es-419/index.json @@ -701,15 +701,6 @@ "app.modal.install-to-play.report-reason": { "message": "¿Qué regla rompe esta instancia?" }, - "app.modal.install-to-play.report-reason.inappropriate": { - "message": "Inapropiado" - }, - "app.modal.install-to-play.report-reason.malicious": { - "message": "Malicioso" - }, - "app.modal.install-to-play.report-reason.spam": { - "message": "Spam" - }, "app.modal.install-to-play.report-shared-instance-header": { "message": "Reportar instancia compartida" }, diff --git a/apps/app-frontend/src/locales/fr-FR/index.json b/apps/app-frontend/src/locales/fr-FR/index.json index 3fdb65f6f0..5cb15c2374 100644 --- a/apps/app-frontend/src/locales/fr-FR/index.json +++ b/apps/app-frontend/src/locales/fr-FR/index.json @@ -698,15 +698,6 @@ "app.modal.install-to-play.report-reason": { "message": "Quelle règle cette instance enfreint-elle ?" }, - "app.modal.install-to-play.report-reason.inappropriate": { - "message": "Inapproprié" - }, - "app.modal.install-to-play.report-reason.malicious": { - "message": "Malicieux" - }, - "app.modal.install-to-play.report-reason.spam": { - "message": "Spam" - }, "app.modal.install-to-play.report-shared-instance-header": { "message": "Signaler une instance partagée" }, diff --git a/apps/app-frontend/src/locales/hu-HU/index.json b/apps/app-frontend/src/locales/hu-HU/index.json index 77f9bffdb4..1e79f49dd8 100644 --- a/apps/app-frontend/src/locales/hu-HU/index.json +++ b/apps/app-frontend/src/locales/hu-HU/index.json @@ -704,15 +704,6 @@ "app.modal.install-to-play.report-reason": { "message": "Melyik szabályt sérti meg ez az adott játékprofil?" }, - "app.modal.install-to-play.report-reason.inappropriate": { - "message": "Nem megfelelő" - }, - "app.modal.install-to-play.report-reason.malicious": { - "message": "Káros" - }, - "app.modal.install-to-play.report-reason.spam": { - "message": "Spam" - }, "app.modal.install-to-play.report-shared-instance-header": { "message": "Megosztott játékprofil jelentése" }, diff --git a/apps/app-frontend/src/locales/it-IT/index.json b/apps/app-frontend/src/locales/it-IT/index.json index 16587ed018..a527c512fa 100644 --- a/apps/app-frontend/src/locales/it-IT/index.json +++ b/apps/app-frontend/src/locales/it-IT/index.json @@ -701,15 +701,6 @@ "app.modal.install-to-play.report-reason": { "message": "Quale regola è violata da quest'istanza?" }, - "app.modal.install-to-play.report-reason.inappropriate": { - "message": "Inappropriato" - }, - "app.modal.install-to-play.report-reason.malicious": { - "message": "Dannoso" - }, - "app.modal.install-to-play.report-reason.spam": { - "message": "Spam" - }, "app.modal.install-to-play.report-shared-instance-header": { "message": "Segnala istanza condivisa" }, diff --git a/apps/app-frontend/src/locales/ja-JP/index.json b/apps/app-frontend/src/locales/ja-JP/index.json index 6bd7ff8194..92ac823f87 100644 --- a/apps/app-frontend/src/locales/ja-JP/index.json +++ b/apps/app-frontend/src/locales/ja-JP/index.json @@ -701,15 +701,6 @@ "app.modal.install-to-play.report-reason": { "message": "この起動構成はどの規則に違反していますか?" }, - "app.modal.install-to-play.report-reason.inappropriate": { - "message": "不適切なコンテンツ" - }, - "app.modal.install-to-play.report-reason.malicious": { - "message": "悪意がある" - }, - "app.modal.install-to-play.report-reason.spam": { - "message": "スパム" - }, "app.modal.install-to-play.report-shared-instance-header": { "message": "共有された起動構成を通報する" }, diff --git a/apps/app-frontend/src/locales/ko-KR/index.json b/apps/app-frontend/src/locales/ko-KR/index.json index 1be3efe362..c135221d5a 100644 --- a/apps/app-frontend/src/locales/ko-KR/index.json +++ b/apps/app-frontend/src/locales/ko-KR/index.json @@ -701,15 +701,6 @@ "app.modal.install-to-play.report-reason": { "message": "이 인스턴스가 위반한 규칙은 무엇인가요?" }, - "app.modal.install-to-play.report-reason.inappropriate": { - "message": "부적절함" - }, - "app.modal.install-to-play.report-reason.malicious": { - "message": "악성/유해함" - }, - "app.modal.install-to-play.report-reason.spam": { - "message": "스팸" - }, "app.modal.install-to-play.report-shared-instance-header": { "message": "공유 인스턴스 신고" }, diff --git a/apps/app-frontend/src/locales/ms-MY/index.json b/apps/app-frontend/src/locales/ms-MY/index.json index 28836c710e..5c0f11251c 100644 --- a/apps/app-frontend/src/locales/ms-MY/index.json +++ b/apps/app-frontend/src/locales/ms-MY/index.json @@ -239,9 +239,6 @@ "app.modal.install-to-play.mod-count": { "message": "{count, plural, other {# mod}}" }, - "app.modal.install-to-play.report-reason.spam": { - "message": "Spam" - }, "app.modal.install-to-play.shared-instance": { "message": "Pemasangan yang dikongsi" }, diff --git a/apps/app-frontend/src/locales/nl-NL/index.json b/apps/app-frontend/src/locales/nl-NL/index.json index 10af52cfdb..84f80db23e 100644 --- a/apps/app-frontend/src/locales/nl-NL/index.json +++ b/apps/app-frontend/src/locales/nl-NL/index.json @@ -701,15 +701,6 @@ "app.modal.install-to-play.report-reason": { "message": "Welke regel wordt in deze instantie overtreden?" }, - "app.modal.install-to-play.report-reason.inappropriate": { - "message": "Ongepast" - }, - "app.modal.install-to-play.report-reason.malicious": { - "message": "Kwaadaardig" - }, - "app.modal.install-to-play.report-reason.spam": { - "message": "Spam" - }, "app.modal.install-to-play.report-shared-instance-header": { "message": "Gedeelde instantie melden" }, diff --git a/apps/app-frontend/src/locales/pl-PL/index.json b/apps/app-frontend/src/locales/pl-PL/index.json index 5fb45c66c8..61dfb14aa6 100644 --- a/apps/app-frontend/src/locales/pl-PL/index.json +++ b/apps/app-frontend/src/locales/pl-PL/index.json @@ -650,15 +650,6 @@ "app.modal.install-to-play.report-reason": { "message": "Którą zasadę narusza ta instancja?" }, - "app.modal.install-to-play.report-reason.inappropriate": { - "message": "Treści nieodpowiednie" - }, - "app.modal.install-to-play.report-reason.malicious": { - "message": "Zawiera Złośliwy kod" - }, - "app.modal.install-to-play.report-reason.spam": { - "message": "Spam" - }, "app.modal.install-to-play.report-shared-instance-header": { "message": "Zgłoś przesłaną Instalacje" }, diff --git a/apps/app-frontend/src/locales/pt-BR/index.json b/apps/app-frontend/src/locales/pt-BR/index.json index f46b9bbab6..93395022f8 100644 --- a/apps/app-frontend/src/locales/pt-BR/index.json +++ b/apps/app-frontend/src/locales/pt-BR/index.json @@ -704,15 +704,6 @@ "app.modal.install-to-play.report-reason": { "message": "Qual regra esta instância viola?" }, - "app.modal.install-to-play.report-reason.inappropriate": { - "message": "Inapropriado" - }, - "app.modal.install-to-play.report-reason.malicious": { - "message": "Malicioso" - }, - "app.modal.install-to-play.report-reason.spam": { - "message": "Spam" - }, "app.modal.install-to-play.report-shared-instance-header": { "message": "Denunciar instância compartilhada" }, diff --git a/apps/app-frontend/src/locales/ru-RU/index.json b/apps/app-frontend/src/locales/ru-RU/index.json index 76ad5b2c8e..7b450ff120 100644 --- a/apps/app-frontend/src/locales/ru-RU/index.json +++ b/apps/app-frontend/src/locales/ru-RU/index.json @@ -695,15 +695,6 @@ "app.modal.install-to-play.report-reason": { "message": "Какое правило нарушает данная сборка?" }, - "app.modal.install-to-play.report-reason.inappropriate": { - "message": "Неприемлемое содержимое" - }, - "app.modal.install-to-play.report-reason.malicious": { - "message": "Вредоносное содержимое" - }, - "app.modal.install-to-play.report-reason.spam": { - "message": "Спам" - }, "app.modal.install-to-play.report-shared-instance-header": { "message": "Сообщить об общем экземпляре" }, diff --git a/apps/app-frontend/src/locales/sv-SE/index.json b/apps/app-frontend/src/locales/sv-SE/index.json index a6eb17552c..6a77471e85 100644 --- a/apps/app-frontend/src/locales/sv-SE/index.json +++ b/apps/app-frontend/src/locales/sv-SE/index.json @@ -674,15 +674,6 @@ "app.modal.install-to-play.report-reason": { "message": "Vilken regel bryter instansen mot?" }, - "app.modal.install-to-play.report-reason.inappropriate": { - "message": "Olämplig" - }, - "app.modal.install-to-play.report-reason.malicious": { - "message": "Skadlig" - }, - "app.modal.install-to-play.report-reason.spam": { - "message": "Spam" - }, "app.modal.install-to-play.report-shared-instance-header": { "message": "Rapportera delad instans" }, diff --git a/apps/app-frontend/src/locales/tr-TR/index.json b/apps/app-frontend/src/locales/tr-TR/index.json index 9fe9fd9359..becb7f8f6b 100644 --- a/apps/app-frontend/src/locales/tr-TR/index.json +++ b/apps/app-frontend/src/locales/tr-TR/index.json @@ -638,15 +638,6 @@ "app.modal.install-to-play.report-image-too-large": { "message": "Dosya 1 MiB boyut sınırını aşıyor" }, - "app.modal.install-to-play.report-reason.inappropriate": { - "message": "Uygunsuz" - }, - "app.modal.install-to-play.report-reason.malicious": { - "message": "Kötü niyetli" - }, - "app.modal.install-to-play.report-reason.spam": { - "message": "Spam" - }, "app.modal.install-to-play.report-submitted": { "message": "Rapor sunuldu" }, diff --git a/apps/app-frontend/src/locales/uk-UA/index.json b/apps/app-frontend/src/locales/uk-UA/index.json index 1666af7c26..ff2e4fd1c0 100644 --- a/apps/app-frontend/src/locales/uk-UA/index.json +++ b/apps/app-frontend/src/locales/uk-UA/index.json @@ -701,15 +701,6 @@ "app.modal.install-to-play.report-reason": { "message": "Яке правило порушує цей профіль?" }, - "app.modal.install-to-play.report-reason.inappropriate": { - "message": "Неприпустимий уміст" - }, - "app.modal.install-to-play.report-reason.malicious": { - "message": "Шкідливий уміст" - }, - "app.modal.install-to-play.report-reason.spam": { - "message": "Спам" - }, "app.modal.install-to-play.report-shared-instance-header": { "message": "Скарга на спільний профіль" }, diff --git a/apps/app-frontend/src/locales/zh-CN/index.json b/apps/app-frontend/src/locales/zh-CN/index.json index 0d6ebfc67c..59ea631d27 100644 --- a/apps/app-frontend/src/locales/zh-CN/index.json +++ b/apps/app-frontend/src/locales/zh-CN/index.json @@ -704,15 +704,6 @@ "app.modal.install-to-play.report-reason": { "message": "该实例违反了哪项规则?" }, - "app.modal.install-to-play.report-reason.inappropriate": { - "message": "不当内容" - }, - "app.modal.install-to-play.report-reason.malicious": { - "message": "恶意内容" - }, - "app.modal.install-to-play.report-reason.spam": { - "message": "垃圾内容" - }, "app.modal.install-to-play.report-shared-instance-header": { "message": "举报共享实例" }, diff --git a/apps/app-frontend/src/locales/zh-TW/index.json b/apps/app-frontend/src/locales/zh-TW/index.json index c87fdb7f28..ea72f805b0 100644 --- a/apps/app-frontend/src/locales/zh-TW/index.json +++ b/apps/app-frontend/src/locales/zh-TW/index.json @@ -704,15 +704,6 @@ "app.modal.install-to-play.report-reason": { "message": "這個實例違反了哪一條規則?" }, - "app.modal.install-to-play.report-reason.inappropriate": { - "message": "不當內容" - }, - "app.modal.install-to-play.report-reason.malicious": { - "message": "惡意內容" - }, - "app.modal.install-to-play.report-reason.spam": { - "message": "垃圾內容" - }, "app.modal.install-to-play.report-shared-instance-header": { "message": "檢舉共用實例" }, diff --git a/apps/frontend/src/components/ui/moderation/ModerationReportCard.vue b/apps/frontend/src/components/ui/moderation/ModerationReportCard.vue index 115fa98e31..9819d36487 100644 --- a/apps/frontend/src/components/ui/moderation/ModerationReportCard.vue +++ b/apps/frontend/src/components/ui/moderation/ModerationReportCard.vue @@ -278,11 +278,13 @@ import { CollapsibleRegion, type ContentItem, CopyCode, + formatReportType, getProjectTypeIcon, injectModrinthClient, injectNotificationManager, useFormatDateTime, useRelativeTime, + useVIntl, } from '@modrinth/ui' import { formatProjectType } from '@modrinth/utils' import { computed, ref, watch } from 'vue' @@ -297,6 +299,7 @@ import SharedInstanceReportContext, { } from './SharedInstanceReportContext.vue' const { addNotification } = injectNotificationManager() +const { formatMessage } = useVIntl() const client = injectModrinthClient() const auth = await useAuth() @@ -787,13 +790,9 @@ const reportItemUrl = computed(() => { } }) -const formattedReportType = computed(() => { - const reportType = props.report.report_type - - // some are split by -, some are split by " " - const words = reportType.includes('-') ? reportType.split('-') : reportType.split(' ') - return words.map((word) => word.charAt(0).toUpperCase() + word.slice(1)).join(' ') -}) +const formattedReportType = computed(() => + formatReportType(formatMessage, props.report.report_type), +) function copyId() { navigator.clipboard.writeText(props.report.id).then(() => { diff --git a/apps/frontend/src/components/ui/report/ReportInfo.vue b/apps/frontend/src/components/ui/report/ReportInfo.vue index 0d5ccfec21..1de7dfb119 100644 --- a/apps/frontend/src/components/ui/report/ReportInfo.vue +++ b/apps/frontend/src/components/ui/report/ReportInfo.vue @@ -90,7 +90,14 @@
- +
import { BoxesIcon, ReportIcon, UnknownIcon, VersionIcon } from '@modrinth/assets' -import { Avatar, Badge, CopyCode, useFormatDateTime, useRelativeTime } from '@modrinth/ui' +import { + Avatar, + Badge, + CopyCode, + defineMessages, + formatReportType, + useFormatDateTime, + useRelativeTime, + useVIntl, +} from '@modrinth/ui' import { formatProjectType, renderHighlightedString } from '@modrinth/utils' import ThreadSummary from '~/components/ui/thread/ThreadSummary.vue' import { getProjectTypeForUrl } from '~/helpers/projects.js' +const { formatMessage } = useVIntl() const formatRelativeTime = useRelativeTime() const formatDateTime = useFormatDateTime({ timeStyle: 'short', @@ -165,6 +182,13 @@ defineProps({ }) const flags = useFeatureFlags() + +const messages = defineMessages({ + reportedFor: { + id: 'report.reported-for', + defaultMessage: 'Reported for {type}', + }, +})