From b540db701eadc4b7865fd58fbe3ef57be6b20533 Mon Sep 17 00:00:00 2001 From: lumiscosity Date: Sat, 10 Jan 2026 22:40:16 +0100 Subject: [PATCH 01/10] deduplicate common strings, part 1 --- .../src/components/ui/ProjectMemberHeader.vue | 29 ++---- .../ui/create/CollectionCreateModal.vue | 13 +-- .../ui/create/OrganizationCreateModal.vue | 13 +-- .../ui/create/ProjectCreateModal.vue | 13 +-- .../ui/dashboard/CreatorTaxFormModal.vue | 5 +- .../withdraw-stages/CompletionStage.vue | 4 - apps/frontend/src/layouts/default.vue | 8 +- apps/frontend/src/pages/[type]/[id].vue | 6 +- .../src/pages/auth/reset-password.vue | 12 +-- apps/frontend/src/pages/auth/sign-in.vue | 16 +--- apps/frontend/src/pages/auth/sign-up.vue | 32 ++----- apps/frontend/src/pages/collection/[id].vue | 16 +--- .../src/pages/settings/billing/index.vue | 42 ++------- apps/frontend/src/pages/settings/sessions.vue | 6 +- apps/frontend/src/pages/user/[id].vue | 18 ++-- .../src/components/billing/PurchaseModal.vue | 75 +++------------- .../components/servers/backups/BackupItem.vue | 8 +- packages/ui/src/utils/common-messages.ts | 88 ++++++++++++++----- 18 files changed, 127 insertions(+), 277 deletions(-) diff --git a/apps/frontend/src/components/ui/ProjectMemberHeader.vue b/apps/frontend/src/components/ui/ProjectMemberHeader.vue index 3cf8f8e559..d08f798c4a 100644 --- a/apps/frontend/src/components/ui/ProjectMemberHeader.vue +++ b/apps/frontend/src/components/ui/ProjectMemberHeader.vue @@ -9,13 +9,13 @@ @@ -26,6 +26,7 @@ import { CheckIcon, XIcon } from '@modrinth/assets' import { ButtonStyled, + commonMessages, defineMessages, injectNotificationManager, type MessageDescriptor, @@ -81,14 +82,6 @@ const messages = defineMessages({ defaultMessage: "You've been invited to join this project. Please accept or decline the invitation.", }, - accept: { - id: 'project-member-header.accept', - defaultMessage: 'Accept', - }, - decline: { - id: 'project-member-header.decline', - defaultMessage: 'Decline', - }, successJoin: { id: 'project-member-header.success-join', defaultMessage: 'You have joined the project team', @@ -105,14 +98,6 @@ const messages = defineMessages({ id: 'project-member-header.error-decline', defaultMessage: 'Failed to decline team invitation', }, - success: { - id: 'project-member-header.success', - defaultMessage: 'Success', - }, - error: { - id: 'project-member-header.error', - defaultMessage: 'Error', - }, }) const { formatMessage } = useVIntl() @@ -171,13 +156,13 @@ async function acceptInvite(): Promise { await acceptTeamInvite(props.project.team) await handleUpdateMembers() addNotification({ - title: formatMessage(messages.success), + title: formatMessage(commonMessages.successLabel), text: formatMessage(messages.successJoin), type: 'success', }) } catch { addNotification({ - title: formatMessage(messages.error), + title: formatMessage(commonMessages.errorLabel), text: formatMessage(messages.errorJoin), type: 'error', }) @@ -192,13 +177,13 @@ async function declineInvite(): Promise { await removeTeamMember(props.project.team, props.auth.user.id) await handleUpdateMembers() addNotification({ - title: formatMessage(messages.success), + title: formatMessage(commonMessages.successLabel), text: formatMessage(messages.successDecline), type: 'success', }) } catch { addNotification({ - title: formatMessage(messages.error), + title: formatMessage(commonMessages.errorLabel), text: formatMessage(messages.errorDecline), type: 'error', }) diff --git a/apps/frontend/src/components/ui/create/CollectionCreateModal.vue b/apps/frontend/src/components/ui/create/CollectionCreateModal.vue index 06ee080b90..ac3cc27395 100644 --- a/apps/frontend/src/components/ui/create/CollectionCreateModal.vue +++ b/apps/frontend/src/components/ui/create/CollectionCreateModal.vue @@ -43,7 +43,7 @@ @@ -60,6 +60,7 @@ import { PlusIcon, XIcon } from '@modrinth/assets' import { ButtonStyled, + commonMessages, defineMessages, injectNotificationManager, NewModal, @@ -102,18 +103,10 @@ const messages = defineMessages({ defaultMessage: 'Your new collection will be created as a public collection with {count, plural, =0 {no projects} one {# project} other {# projects}}.', }, - cancel: { - id: 'create.collection.cancel', - defaultMessage: 'Cancel', - }, createCollection: { id: 'create.collection.create-collection', defaultMessage: 'Create collection', }, - errorTitle: { - id: 'create.collection.error-title', - defaultMessage: 'An error occurred', - }, }) const name = ref('') @@ -150,7 +143,7 @@ async function create() { await router.push(`/collection/${result.id}`) } catch (err) { addNotification({ - title: formatMessage(messages.errorTitle), + title: formatMessage(commonMessages.errorNotificationTitle), text: err?.data?.description || err?.message || err, type: 'error', }) diff --git a/apps/frontend/src/components/ui/create/OrganizationCreateModal.vue b/apps/frontend/src/components/ui/create/OrganizationCreateModal.vue index d80e05633d..9f208c628f 100644 --- a/apps/frontend/src/components/ui/create/OrganizationCreateModal.vue +++ b/apps/frontend/src/components/ui/create/OrganizationCreateModal.vue @@ -65,7 +65,7 @@ @@ -83,6 +83,7 @@ import { PlusIcon, XIcon } from '@modrinth/assets' import { ButtonStyled, + commonMessages, defineMessages, injectNotificationManager, NewModal, @@ -130,18 +131,10 @@ const messages = defineMessages({ defaultMessage: 'You will be the owner of this organization, but you can invite other members and transfer ownership at any time.', }, - cancel: { - id: 'create.organization.cancel', - defaultMessage: 'Cancel', - }, createOrganization: { id: 'create.organization.create-organization', defaultMessage: 'Create organization', }, - errorTitle: { - id: 'create.organization.error-title', - defaultMessage: 'An error occurred', - }, }) const name = ref('') @@ -172,7 +165,7 @@ async function createOrganization(): Promise { } catch (err: any) { console.error(err) addNotification({ - title: formatMessage(messages.errorTitle), + title: formatMessage(commonMessages.errorNotificationTitle), text: err.data ? err.data.description : err, type: 'error', }) diff --git a/apps/frontend/src/components/ui/create/ProjectCreateModal.vue b/apps/frontend/src/components/ui/create/ProjectCreateModal.vue index fe9e6ea76f..08f3cdcc1f 100644 --- a/apps/frontend/src/components/ui/create/ProjectCreateModal.vue +++ b/apps/frontend/src/components/ui/create/ProjectCreateModal.vue @@ -79,7 +79,7 @@ @@ -98,6 +98,7 @@ import { PlusIcon, XIcon } from '@modrinth/assets' import { ButtonStyled, Chips, + commonMessages, defineMessages, injectNotificationManager, NewModal, @@ -147,18 +148,10 @@ const messages = defineMessages({ id: 'create.project.summary-placeholder', defaultMessage: 'This project adds...', }, - cancel: { - id: 'create.project.cancel', - defaultMessage: 'Cancel', - }, createProject: { id: 'create.project.create-project', defaultMessage: 'Create project', }, - errorTitle: { - id: 'create.project.error-title', - defaultMessage: 'An error occurred', - }, visibilityPublic: { id: 'create.project.visibility-public', defaultMessage: 'Public', @@ -256,7 +249,7 @@ async function createProject() { await router.push(`/project/${slug.value}/settings`) } catch (err) { addNotification({ - title: formatMessage(messages.errorTitle), + title: formatMessage(commonMessages.errorNotificationTitle), text: err.data ? err.data.description : err, type: 'error', }) diff --git a/apps/frontend/src/components/ui/dashboard/CreatorTaxFormModal.vue b/apps/frontend/src/components/ui/dashboard/CreatorTaxFormModal.vue index b2e1a73b8b..2a7d4dc862 100644 --- a/apps/frontend/src/components/ui/dashboard/CreatorTaxFormModal.vue +++ b/apps/frontend/src/components/ui/dashboard/CreatorTaxFormModal.vue @@ -37,7 +37,7 @@ v-model="isUSCitizen" :items="['yes', 'no']" :format-label=" - (item) => (item === 'yes' ? formatMessage(messages.yes) : formatMessage(messages.no)) + (item) => (item === 'yes' ? formatMessage(commonMessages.yesLabel) : formatMessage(commonMessages.noLabel)) " :never-empty="false" :capitalize="true" @@ -162,6 +162,7 @@ import { Admonition, ButtonStyled, Chips, + commonMessages, defineMessages, injectNotificationManager, IntlFormatted, @@ -228,8 +229,6 @@ const messages = defineMessages({ id: 'dashboard.creator-tax-form-modal.us-citizen.question', defaultMessage: 'Are you a US citizen?', }, - yes: { id: 'common.yes', defaultMessage: 'Yes' }, - no: { id: 'common.no', defaultMessage: 'No' }, entityQuestion: { id: 'dashboard.creator-tax-form-modal.entity.question', defaultMessage: 'Are you a private individual or part of a foreign entity?', diff --git a/apps/frontend/src/components/ui/dashboard/withdraw-stages/CompletionStage.vue b/apps/frontend/src/components/ui/dashboard/withdraw-stages/CompletionStage.vue index f27f580608..198afb196b 100644 --- a/apps/frontend/src/components/ui/dashboard/withdraw-stages/CompletionStage.vue +++ b/apps/frontend/src/components/ui/dashboard/withdraw-stages/CompletionStage.vue @@ -287,10 +287,6 @@ const messages = defineMessages({ defaultMessage: "You'll receive an email at {email} with instructions to redeem your withdrawal.", }, - closeButton: { - id: 'dashboard.withdraw.completion.close-button', - defaultMessage: 'Close', - }, transactionsButton: { id: 'dashboard.withdraw.completion.transactions-button', defaultMessage: 'Transactions', diff --git a/apps/frontend/src/layouts/default.vue b/apps/frontend/src/layouts/default.vue index 4b3d9ecb98..66ff0fed39 100644 --- a/apps/frontend/src/layouts/default.vue +++ b/apps/frontend/src/layouts/default.vue @@ -460,7 +460,7 @@