diff --git a/packages/moderation/data/nags/links.ts b/packages/moderation/data/nags/links.ts index bfee7799d..f76037b21 100644 --- a/packages/moderation/data/nags/links.ts +++ b/packages/moderation/data/nags/links.ts @@ -68,7 +68,7 @@ export const linksNags: Nag[] = [ description: defineMessage({ id: 'nags.verify-external-links.description', defaultMessage: - "Some of your external links may be using domains that aren't recognized as common for their link type.", + 'Some of your external links may be using domains that are inappropriate for that type of link.', }), status: 'warning', shouldShow: (context: NagContext) => { @@ -91,12 +91,12 @@ export const linksNags: Nag[] = [ id: 'misused-discord-link', title: defineMessage({ id: 'nags.misused-discord-link.title', - defaultMessage: 'Misplaced Discord invite', + defaultMessage: 'Move Discord invite', }), description: defineMessage({ id: 'nags.misused-discord-link-description', defaultMessage: - 'Discord invites can not be used for other link types. Please put your Discord link in the Discord Invite link field.', + 'Discord invites can not be used for other link types. Please put your Discord link in the Discord Invite link field only.', }), status: 'required', shouldShow: (context: NagContext) => @@ -116,7 +116,7 @@ export const linksNags: Nag[] = [ id: 'link-shortener-usage', title: defineMessage({ id: 'nags.link-shortener-usage.title', - defaultMessage: 'Use of link shorteners is prohibited', + defaultMessage: "Don't use link shorteners", }), description: defineMessage({ id: 'nags.link-shortener-usage.description', @@ -134,7 +134,7 @@ export const linksNags: Nag[] = [ id: 'invalid-license-url', title: defineMessage({ id: 'nags.invalid-license-url.title', - defaultMessage: 'Invalid license URL', + defaultMessage: 'Add a valid license link', }), description: (context: NagContext) => { const { formatMessage } = useVIntl() @@ -169,7 +169,7 @@ export const linksNags: Nag[] = [ ) } }, - status: 'warning', + status: 'required', shouldShow: (context: NagContext) => { const licenseUrl = context.project.license.url if (!licenseUrl) return false @@ -196,7 +196,7 @@ export const linksNags: Nag[] = [ id: 'gpl-license-source-required', title: defineMessage({ id: 'nags.gpl-license-source-required.title', - defaultMessage: 'License requires source', + defaultMessage: 'Provide source code', }), description: (context: NagContext) => { const { formatMessage } = useVIntl() @@ -205,7 +205,7 @@ export const linksNags: Nag[] = [ defineMessage({ id: 'nags.gpl-license-source-required.description', defaultMessage: - 'Your {projectType} uses a license which requires source code to be available. Please provide a source code link or sources file, or consider using a different license.', + 'Your {projectType} uses a license which requires source code to be available. Please provide a source code link or sources file for each additional version, or consider using a different license.', }), { projectType: formatProjectType(context.project.project_type).toLowerCase(), diff --git a/packages/moderation/data/nags/tags.ts b/packages/moderation/data/nags/tags.ts index 31f1072e0..5e1f46322 100644 --- a/packages/moderation/data/nags/tags.ts +++ b/packages/moderation/data/nags/tags.ts @@ -2,6 +2,10 @@ import type { Project } from '@modrinth/utils' import type { Nag, NagContext } from '../../types/nags' import { useVIntl, defineMessage } from '@vintl/vintl' +const allResolutionTags = ['8x-', '16x', '32x', '48x', '64x', '128x', '256x', '512x+'] + +const MAX_TAG_COUNT = 8 + function getCategories( project: Project & { actualProjectType: string }, tags: { @@ -22,21 +26,23 @@ export const tagsNags: Nag[] = [ id: 'too-many-tags', title: defineMessage({ id: 'nags.too-many-tags.title', - defaultMessage: 'Too many tags selected', + defaultMessage: 'Select accurate tags', }), description: (context: NagContext) => { const { formatMessage } = useVIntl() const tagCount = context.project.categories.length + (context.project.additional_categories?.length || 0) + const maxTagCount = MAX_TAG_COUNT return formatMessage( defineMessage({ id: 'nags.too-many-tags.description', defaultMessage: - "You've selected {tagCount} tags. Consider reducing to 5 or fewer to keep your project focused and easier to discover.", + "You've selected {tagCount} tags. Consider reducing to {maxTagCount} or fewer to make sure your project appears in relevant search results.", }), { tagCount, + maxTagCount, }, ) }, @@ -44,7 +50,7 @@ export const tagsNags: Nag[] = [ shouldShow: (context: NagContext) => { const tagCount = context.project.categories.length + (context.project.additional_categories?.length || 0) - return tagCount > 5 + return tagCount > MAX_TAG_COUNT }, link: { path: 'settings/tags', @@ -59,13 +65,13 @@ export const tagsNags: Nag[] = [ id: 'multiple-resolution-tags', title: defineMessage({ id: 'nags.multiple-resolution-tags.title', - defaultMessage: 'Multiple resolution tags selected', + defaultMessage: 'Select correct resolution', }), description: (context: NagContext) => { const { formatMessage } = useVIntl() - const resolutionTags = context.project.categories.filter((tag: string) => - ['16x', '32x', '48x', '64x', '128x', '256x', '512x', '1024x'].includes(tag), - ) + const resolutionTags = context.project.categories + .concat(context.project.additional_categories) + .filter((tag: string) => allResolutionTags.includes(tag)) return formatMessage( defineMessage({ @@ -75,7 +81,10 @@ export const tagsNags: Nag[] = [ }), { count: resolutionTags.length, - tags: resolutionTags.join(', '), + tags: resolutionTags + .join(', ') + .replace('8x-', '8x or lower') + .replace('512x+', '512x or higher'), }, ) }, @@ -83,9 +92,9 @@ export const tagsNags: Nag[] = [ shouldShow: (context: NagContext) => { if (context.project.project_type !== 'resourcepack') return false - const resolutionTags = context.project.categories.filter((tag: string) => - ['16x', '32x', '48x', '64x', '128x', '256x', '512x', '1024x'].includes(tag), - ) + const resolutionTags = context.project.categories + .concat(context.project.additional_categories) + .filter((tag: string) => allResolutionTags.includes(tag)) return resolutionTags.length > 1 }, link: { @@ -101,7 +110,7 @@ export const tagsNags: Nag[] = [ id: 'all-tags-selected', title: defineMessage({ id: 'nags.all-tags-selected.title', - defaultMessage: 'All tags selected', + defaultMessage: 'Select accurate tags', }), description: (context: NagContext) => { const { formatMessage } = useVIntl() @@ -115,7 +124,7 @@ export const tagsNags: Nag[] = [ defineMessage({ id: 'nags.all-tags-selected.description', defaultMessage: - "You've selected all {totalAvailableTags} available tags. This defeats the purpose of tags, which are meant to help users find relevant projects. Please select only the tags that truly apply to your project.", + "You've selected all {totalAvailableTags} available tags. This defeats the purpose of tags, which are meant to help users find relevant projects. Please select only the tags that are relevant to your project.", }), { totalAvailableTags,