Clean up formatters from prev PR (#5254)

This commit is contained in:
Prospector
2026-02-02 01:38:36 -08:00
committed by GitHub
parent a207daef0d
commit 11f00be606
8 changed files with 45 additions and 59 deletions

View File

@@ -18,7 +18,7 @@ import {
Chips, Chips,
Combobox, Combobox,
defineMessages, defineMessages,
getTagMessageOrDefault, formatLoader,
injectNotificationManager, injectNotificationManager,
useVIntl, useVIntl,
} from '@modrinth/ui' } from '@modrinth/ui'
@@ -563,10 +563,7 @@ const messages = defineMessages({
? modpackVersion ? modpackVersion
? modpackVersion?.version_number ? modpackVersion?.version_number
: 'Unknown version' : 'Unknown version'
: (() => { : formatLoader(formatMessage, instance.loader)
const message = getTagMessageOrDefault(instance.loader, 'loader')
return typeof message === 'string' ? message : formatMessage(message)
})()
}} }}
<template v-if="instance.loader !== 'vanilla' && !modpackProject"> <template v-if="instance.loader !== 'vanilla' && !modpackProject">
{{ instance.loader_version || formatMessage(messages.unknownVersion) }} {{ instance.loader_version || formatMessage(messages.unknownVersion) }}
@@ -676,10 +673,7 @@ const messages = defineMessages({
<h2 class="m-0 mt-4 text-lg font-extrabold text-contrast block"> <h2 class="m-0 mt-4 text-lg font-extrabold text-contrast block">
{{ {{
formatMessage(messages.loaderVersion, { formatMessage(messages.loaderVersion, {
loader: (() => { loader: formatLoader(formatMessage, loader),
const message = getTagMessageOrDefault(loader, 'loader')
return typeof message === 'string' ? message : formatMessage(message)
})(),
}) })
}} }}
</h2> </h2>
@@ -713,10 +707,7 @@ const messages = defineMessages({
? messages.alreadyInstalledVanilla ? messages.alreadyInstalledVanilla
: messages.alreadyInstalledModded, : messages.alreadyInstalledModded,
{ {
platform: (() => { platform: formatLoader(formatMessage, loader),
const message = getTagMessageOrDefault(loader, 'loader')
return typeof message === 'string' ? message : formatMessage(message)
})(),
version: instance.loader_version, version: instance.loader_version,
game_version: gameVersion, game_version: gameVersion,
}, },

View File

@@ -146,8 +146,7 @@
? 'All platforms' ? 'All platforms'
: filtersRef?.selectedPlatforms : filtersRef?.selectedPlatforms
.map((x) => { .map((x) => {
const message = getTagMessageOrDefault(x, 'loader') return formatLoader(formatMessage, x)
return typeof message === 'string' ? message : formatMessage(message)
}) })
.join(', ') .join(', ')
}} }}
@@ -260,7 +259,7 @@ import {
Checkbox, Checkbox,
Combobox, Combobox,
CopyCode, CopyCode,
getTagMessageOrDefault, formatLoader,
NewModal, NewModal,
TagItem, TagItem,
useVIntl, useVIntl,
@@ -436,10 +435,7 @@ const formattedVersions = computed(() => {
if (secondLoaderPosition === -1) return -1 if (secondLoaderPosition === -1) return -1
return firstLoaderPosition - secondLoaderPosition return firstLoaderPosition - secondLoaderPosition
}) })
.map((loader: string) => { .map((loader: string) => formatLoader(formatMessage, loader)),
const message = getTagMessageOrDefault(loader, 'loader')
return typeof message === 'string' ? message : formatMessage(message)
}),
} }
}) })

View File

@@ -66,11 +66,7 @@
v-for="category in categoryLists[header]" v-for="category in categoryLists[header]"
:key="`category-${header}-${category.name}`" :key="`category-${header}-${category.name}`"
:model-value="current.selectedTags.includes(category)" :model-value="current.selectedTags.includes(category)"
:description=" :description="formatCategory(formatMessage, category.name)"
typeof getTagMessageOrDefault(category.name, 'category') === 'string'
? getTagMessageOrDefault(category.name, 'category')
: formatMessage(getTagMessageOrDefault(category.name, 'category'))
"
class="category-selector" class="category-selector"
@update:model-value="toggleCategory(category)" @update:model-value="toggleCategory(category)"
> >
@@ -106,11 +102,7 @@
:key="`featured-category-${category.name}`" :key="`featured-category-${category.name}`"
class="category-selector" class="category-selector"
:model-value="current.featuredTags.includes(category)" :model-value="current.featuredTags.includes(category)"
:description=" :description="formatCategory(formatMessage, category.name)"
typeof getTagMessageOrDefault(category.name, 'category') === 'string'
? getTagMessageOrDefault(category.name, 'category')
: formatMessage(getTagMessageOrDefault(category.name, 'category'))
"
:disabled="current.featuredTags.length >= 3 && !current.featuredTags.includes(category)" :disabled="current.featuredTags.length >= 3 && !current.featuredTags.includes(category)"
@update:model-value="toggleFeaturedCategory(category)" @update:model-value="toggleFeaturedCategory(category)"
> >
@@ -143,8 +135,8 @@
import { getCategoryIcon, StarIcon, TriangleAlertIcon } from '@modrinth/assets' import { getCategoryIcon, StarIcon, TriangleAlertIcon } from '@modrinth/assets'
import { import {
Checkbox, Checkbox,
formatCategory,
FormattedTag, FormattedTag,
getTagMessageOrDefault,
injectProjectPageContext, injectProjectPageContext,
UnsavedChangesPopup, UnsavedChangesPopup,
useSavable, useSavable,

View File

@@ -2,7 +2,7 @@
import { computed } from 'vue' import { computed } from 'vue'
import { useVIntl } from '../../composables' import { useVIntl } from '../../composables'
import { getTagMessageOrDefault } from '../../utils/tag-messages.ts' import { formatTag } from '../../utils/tag-messages.ts'
const { formatMessage } = useVIntl() const { formatMessage } = useVIntl()
@@ -11,9 +11,9 @@ const props = defineProps<{
enforceType?: 'loader' | 'category' enforceType?: 'loader' | 'category'
}>() }>()
const message = computed(() => getTagMessageOrDefault(props.tag, props.enforceType)) const message = computed(() => formatTag(formatMessage, props.tag, props.enforceType))
</script> </script>
<template> <template>
{{ typeof message === 'string' ? message : formatMessage(message) }} {{ message }}
</template> </template>

View File

@@ -3,7 +3,7 @@
<slot /> <slot />
<span v-for="category in categories.filter((x) => !!x)" :key="category"> <span v-for="category in categories.filter((x) => !!x)" :key="category">
<component :is="getTagIcon(category)" v-if="getTagIcon(category)" /> <component :is="getTagIcon(category)" v-if="getTagIcon(category)" />
{{ getFormattedMessage(category) }} {{ formatTag(formatMessage, category) }}
</span> </span>
</div> </div>
</template> </template>
@@ -11,18 +11,13 @@
import { getTagIcon } from '@modrinth/assets' import { getTagIcon } from '@modrinth/assets'
import { useVIntl } from '../../composables' import { useVIntl } from '../../composables'
import { getTagMessageOrDefault } from '../../utils/tag-messages.ts' import { formatTag } from '../../utils/tag-messages.ts'
const { formatMessage } = useVIntl() const { formatMessage } = useVIntl()
defineProps<{ defineProps<{
categories: string[] categories: string[]
}>() }>()
const getFormattedMessage = (tag: string) => {
const message = getTagMessageOrDefault(tag)
return typeof message === 'string' ? message : formatMessage(message)
}
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>

View File

@@ -5,7 +5,7 @@ import { type Component, computed, readonly, type Ref, ref } from 'vue'
import { type LocationQueryRaw, type LocationQueryValue, useRoute } from 'vue-router' import { type LocationQueryRaw, type LocationQueryValue, useRoute } from 'vue-router'
import { defineMessage, useVIntl } from '../composables/i18n' import { defineMessage, useVIntl } from '../composables/i18n'
import { getTagMessageOrDefault } from './tag-messages.ts' import { formatCategory, formatLoader } from './tag-messages.ts'
type BaseOption = { type BaseOption = {
id: string id: string
@@ -144,10 +144,9 @@ export function useSearch(
options: [], options: [],
} }
} }
const message = getTagMessageOrDefault(category.name, 'category')
categoryFilters[filterTypeId].options.push({ categoryFilters[filterTypeId].options.push({
id: category.name, id: category.name,
formatted_name: typeof message === 'string' ? message : formatMessage(message), formatted_name: formatCategory(formatMessage, category.name),
icon: getCategoryIcon(category.name), icon: getCategoryIcon(category.name),
value: `categories:${category.name}`, value: `categories:${category.name}`,
method: category.header === 'resolutions' ? 'or' : 'and', method: category.header === 'resolutions' ? 'or' : 'and',
@@ -256,10 +255,9 @@ export function useSearch(
!loader.supported_project_types.includes('datapack'), !loader.supported_project_types.includes('datapack'),
) )
.map((loader) => { .map((loader) => {
const message = getTagMessageOrDefault(loader.name, 'loader')
return { return {
id: loader.name, id: loader.name,
formatted_name: typeof message === 'string' ? message : formatMessage(message), formatted_name: formatLoader(formatMessage, loader.name),
icon: getLoaderIcon(loader.name), icon: getLoaderIcon(loader.name),
method: 'or', method: 'or',
value: `categories:${loader.name}`, value: `categories:${loader.name}`,
@@ -283,10 +281,9 @@ export function useSearch(
options: tags.value.loaders options: tags.value.loaders
.filter((loader) => loader.supported_project_types.includes('modpack')) .filter((loader) => loader.supported_project_types.includes('modpack'))
.map((loader) => { .map((loader) => {
const message = getTagMessageOrDefault(loader.name, 'loader')
return { return {
id: loader.name, id: loader.name,
formatted_name: typeof message === 'string' ? message : formatMessage(message), formatted_name: formatLoader(formatMessage, loader.name),
icon: getLoaderIcon(loader.name), icon: getLoaderIcon(loader.name),
method: 'or', method: 'or',
value: `categories:${loader.name}`, value: `categories:${loader.name}`,
@@ -313,10 +310,9 @@ export function useSearch(
!PLUGIN_PLATFORMS.includes(loader.name), !PLUGIN_PLATFORMS.includes(loader.name),
) )
.map((loader) => { .map((loader) => {
const message = getTagMessageOrDefault(loader.name, 'loader')
return { return {
id: loader.name, id: loader.name,
formatted_name: typeof message === 'string' ? message : formatMessage(message), formatted_name: formatLoader(formatMessage, loader.name),
icon: getLoaderIcon(loader.name), icon: getLoaderIcon(loader.name),
method: 'or', method: 'or',
value: `categories:${loader.name}`, value: `categories:${loader.name}`,
@@ -339,10 +335,9 @@ export function useSearch(
options: tags.value.loaders options: tags.value.loaders
.filter((loader) => PLUGIN_PLATFORMS.includes(loader.name)) .filter((loader) => PLUGIN_PLATFORMS.includes(loader.name))
.map((loader) => { .map((loader) => {
const message = getTagMessageOrDefault(loader.name, 'loader')
return { return {
id: loader.name, id: loader.name,
formatted_name: typeof message === 'string' ? message : formatMessage(message), formatted_name: formatLoader(formatMessage, loader.name),
icon: getLoaderIcon(loader.name), icon: getLoaderIcon(loader.name),
method: 'or', method: 'or',
value: `categories:${loader.name}`, value: `categories:${loader.name}`,
@@ -366,10 +361,9 @@ export function useSearch(
options: tags.value.loaders options: tags.value.loaders
.filter((loader) => loader.supported_project_types.includes('shader')) .filter((loader) => loader.supported_project_types.includes('shader'))
.map((loader) => { .map((loader) => {
const message = getTagMessageOrDefault(loader.name, 'loader')
return { return {
id: loader.name, id: loader.name,
formatted_name: typeof message === 'string' ? message : formatMessage(message), formatted_name: formatLoader(formatMessage, loader.name),
icon: getLoaderIcon(loader.name), icon: getLoaderIcon(loader.name),
method: 'or', method: 'or',
value: `categories:${loader.name}`, value: `categories:${loader.name}`,

View File

@@ -1,6 +1,6 @@
import { capitalizeString } from '@modrinth/utils' import { capitalizeString } from '@modrinth/utils'
import { defineMessages, type MessageDescriptor } from '../composables/i18n' import { defineMessages, type MessageDescriptor, type VIntlFormatters } from '../composables/i18n'
export const loaderMessages = defineMessages({ export const loaderMessages = defineMessages({
babric: { babric: {
@@ -401,9 +401,27 @@ export function getTagMessage(
} }
} }
export function getTagMessageOrDefault( export function getLoaderMessage(loader: string) {
return getTagMessage(loader, 'loader')
}
export function getCategoryMessage(category: string) {
return getTagMessage(category, 'category')
}
export function formatTag(
formatter: VIntlFormatters['formatMessage'],
tag: string, tag: string,
enforceType?: 'loader' | 'category', enforceType?: 'loader' | 'category',
): MessageDescriptor | string { ) {
return getTagMessage(tag, enforceType) ?? capitalizeString(tag) const message = getTagMessage(tag, enforceType)
return message ? formatter(message) : capitalizeString(tag)
}
export function formatCategory(formatter: VIntlFormatters['formatMessage'], category: string) {
return formatTag(formatter, category, 'category')
}
export function formatLoader(formatter: VIntlFormatters['formatMessage'], category: string) {
return formatTag(formatter, category, 'category')
} }

View File

@@ -163,7 +163,7 @@ export const formatProjectType = (name, short = false) => {
} }
/** /**
* @deprecated Use tag-messages.ts' `getTagMessageOrDefault(tag)` instead. * @deprecated Use tag-messages.ts' `formatTag(tag)` instead.
*/ */
export const formatCategory = (name) => { export const formatCategory = (name) => {
if (name === 'modloader') { if (name === 'modloader') {