diff --git a/apps/frontend/src/components/ui/ProjectDownloadModal/DownloadDependencies.vue b/apps/frontend/src/components/ui/ProjectDownloadModal/DownloadDependencies.vue index ec29c18cac..aeb93b27c1 100644 --- a/apps/frontend/src/components/ui/ProjectDownloadModal/DownloadDependencies.vue +++ b/apps/frontend/src/components/ui/ProjectDownloadModal/DownloadDependencies.vue @@ -27,8 +27,8 @@ import { InfoIcon } from '@modrinth/assets' import { defineMessages, useVIntl } from '@modrinth/ui' import { computed } from 'vue' -import DownloadDependency from './DownloadDependency.vue' import { injectDownloadModalProvider } from './download-modal-provider' +import DownloadDependency from './DownloadDependency.vue' defineOptions({ name: 'DownloadDependencies', diff --git a/apps/frontend/src/components/ui/ProjectDownloadModal/download-modal-provider.ts b/apps/frontend/src/components/ui/ProjectDownloadModal/download-modal-provider.ts index 5a183d1cd9..aa1a405c5c 100644 --- a/apps/frontend/src/components/ui/ProjectDownloadModal/download-modal-provider.ts +++ b/apps/frontend/src/components/ui/ProjectDownloadModal/download-modal-provider.ts @@ -213,10 +213,11 @@ export function provideDownloadModalProvider( dedupeDependencyRows(resolvedDependencyRows.value), ) - const duplicateDependencyRowsHidden = computed(() => - downloadRowsLoaded.value && - (hasSkippedDuplicateDependency(dependencyResolution.value) || - hasDuplicateDependencyRows(resolvedDependencyRows.value)), + const duplicateDependencyRowsHidden = computed( + () => + downloadRowsLoaded.value && + (hasSkippedDuplicateDependency(dependencyResolution.value) || + hasDuplicateDependencyRows(resolvedDependencyRows.value)), ) const additionalFileRows = computed(() => @@ -237,9 +238,7 @@ export function provideDownloadModalProvider( ) const downloadRows = computed(() => - downloadRowsLoaded.value - ? [...visibleDependencyRows.value, ...additionalFileRows.value] - : [], + downloadRowsLoaded.value ? [...visibleDependencyRows.value, ...additionalFileRows.value] : [], ) const downloadableDependencyFiles = computed(() => @@ -311,6 +310,9 @@ export function provideDownloadModalProvider( ? skippedReasonLabel(dependency.reason) : formatMessage(messages.unavailableDependency) const name = project.title + const metadataLabel = isProjectOnlyDependencyReference(dependency) + ? formatMessage(messages.anyCompatibleDependency) + : (version?.version_number ?? formatMessage(messages.anyCompatibleDependency)) return { key: `${dependency.project_id}-${versionId ?? 'unresolved'}-${ @@ -323,7 +325,7 @@ export function provideDownloadModalProvider( 'reason' in dependency || !primaryFile ? undefined : getDownloadUrl(primaryFile.url), filename: primaryFile?.filename, fileSize: primaryFile?.size, - metadataLabel: version?.version_number ?? formatMessage(messages.anyCompatibleDependency), + metadataLabel, typeLabel: 'Required', unavailableTooltip, dependencies: (versionId && dependenciesByParentVersionId.value.get(versionId) @@ -336,6 +338,21 @@ export function provideDownloadModalProvider( } } + function isProjectOnlyDependencyReference(dependency: ResolvedContent) { + const parentVersionId = dependency.dependent_on_version_id + const parentVersion = + parentVersionId === options.selectedVersion.value?.id + ? options.selectedVersion.value + : parentVersionId + ? dependencyVersionById.value.get(parentVersionId) + : undefined + + return !!parentVersion?.dependencies?.some( + (parentDependency) => + parentDependency.project_id === dependency.project_id && !parentDependency.version_id, + ) + } + function skippedReasonLabel(reason: Labrinth.Content.v3.SkippedContent['reason']) { return ( { diff --git a/apps/frontend/src/components/ui/ProjectDownloadModal/index.vue b/apps/frontend/src/components/ui/ProjectDownloadModal/index.vue index 0d4e628d29..69737c34fe 100644 --- a/apps/frontend/src/components/ui/ProjectDownloadModal/index.vue +++ b/apps/frontend/src/components/ui/ProjectDownloadModal/index.vue @@ -109,10 +109,10 @@ import { navigateTo } from '#app' import { saveFeatureFlags } from '~/composables/featureFlags.ts' import { STALE_TIME, STALE_TIME_LONG } from '~/composables/queries/project' +import { provideDownloadModalProvider } from './download-modal-provider' import DownloadDependencies from './DownloadDependencies.vue' import DownloadProject from './DownloadProject.vue' import InstallWithModrinthApp from './InstallWithModrinthApp.vue' -import { provideDownloadModalProvider } from './download-modal-provider' type DownloadModalProject = Omit & { project_type: DisplayProjectType diff --git a/apps/frontend/src/locales/da-DK/index.json b/apps/frontend/src/locales/da-DK/index.json index 132a7da81b..1de37ab305 100644 --- a/apps/frontend/src/locales/da-DK/index.json +++ b/apps/frontend/src/locales/da-DK/index.json @@ -1766,9 +1766,6 @@ "project.download.no-app": { "message": "Har ikke Modrinth App?" }, - "project.download.no-versions-available": { - "message": "Ingen versioner tilgængelig til {gameVersion} og {platform}." - }, "project.download.platform-unsupported-tooltip": { "message": "{title} understøtter ikke {platform} til {gameVersion}" }, diff --git a/apps/frontend/src/locales/de-CH/index.json b/apps/frontend/src/locales/de-CH/index.json index 9513b0629b..36d403783d 100644 --- a/apps/frontend/src/locales/de-CH/index.json +++ b/apps/frontend/src/locales/de-CH/index.json @@ -3227,9 +3227,6 @@ "project.download.no-app": { "message": "Du hast die Modrinth App nicht?" }, - "project.download.no-versions-available": { - "message": "Keinen versionen verfügbar für {gameVersion} und {platform}." - }, "project.download.platform-unsupported-tooltip": { "message": "{title} unterstützt {platform} für {gameVersion} nicht" }, diff --git a/apps/frontend/src/locales/de-DE/index.json b/apps/frontend/src/locales/de-DE/index.json index 9dcda3478c..8a575fb2a8 100644 --- a/apps/frontend/src/locales/de-DE/index.json +++ b/apps/frontend/src/locales/de-DE/index.json @@ -3227,9 +3227,6 @@ "project.download.no-app": { "message": "Du hast die Modrinth App nicht?" }, - "project.download.no-versions-available": { - "message": "Keine Versionen für {gameVersion} und {platform} verfügbar." - }, "project.download.platform-unsupported-tooltip": { "message": "{title} unterstützt {platform} für die {gameVersion} nicht" }, diff --git a/apps/frontend/src/locales/en-US/index.json b/apps/frontend/src/locales/en-US/index.json index 93fc60a4aa..62b6a8f150 100644 --- a/apps/frontend/src/locales/en-US/index.json +++ b/apps/frontend/src/locales/en-US/index.json @@ -3285,7 +3285,7 @@ "message": "This loader is incompatible with the base project." }, "project.download.compatible-version-title": { - "message": "Compatible version" + "message": "Compatible versions" }, "project.download.dependencies-title": { "message": "Dependencies" @@ -3320,9 +3320,18 @@ "project.download.dependency-unavailable": { "message": "This dependency cannot be downloaded" }, + "project.download.download": { + "message": "Download" + }, + "project.download.download-as-zip": { + "message": "Download as .zip" + }, "project.download.download-version": { "message": "Download {version}" }, + "project.download.download-with-dependencies": { + "message": "Download with deps" + }, "project.download.duplicate-dependencies-hidden": { "message": "Duplicate dependencies are hidden" }, @@ -3332,8 +3341,8 @@ "project.download.game-version-unsupported-tooltip": { "message": "{title} does not support {gameVersion} for {platform}" }, - "project.download.install-with-app-description": { - "message": "Automatically install the correct version and dependencies." + "project.download.install-with-app": { + "message": "Install with Modrinth App" }, "project.download.manually": { "message": "Download manually" @@ -3344,9 +3353,6 @@ "project.download.no-game-versions-found": { "message": "No game versions found" }, - "project.download.no-versions-available": { - "message": "No versions available for {gameVersion} and {platform}." - }, "project.download.platform-unsupported-tooltip": { "message": "{title} does not support {platform} for {gameVersion}" }, @@ -3359,18 +3365,6 @@ "project.download.select-platform": { "message": "Select platform" }, - "project.download.selected-version-download-all": { - "message": "Download all (.zip)" - }, - "project.download.selected-version-downloading": { - "message": "Downloading... ({current}/{total})" - }, - "project.download.selected-version-failed-text": { - "message": "One or more version files could not be downloaded. Please try again." - }, - "project.download.selected-version-failed-title": { - "message": "Could not download version" - }, "project.download.show-all-versions": { "message": "Show all versions" }, @@ -3380,6 +3374,12 @@ "project.download.unknown-loader": { "message": "Unknown loader" }, + "project.download.zip-failed-text": { + "message": "One or more files could not be downloaded. Please try again." + }, + "project.download.zip-failed-title": { + "message": "Could not download files" + }, "project.environment.migration-no-permission.message": { "message": "We've just overhauled the Environments system on Modrinth and new options are now available. You don't have permission to modify these settings, but please let another member of the project know that the environment metadata needs to be verified." }, diff --git a/apps/frontend/src/locales/es-419/index.json b/apps/frontend/src/locales/es-419/index.json index 9c8a7dbc38..0ab2790f28 100644 --- a/apps/frontend/src/locales/es-419/index.json +++ b/apps/frontend/src/locales/es-419/index.json @@ -3227,9 +3227,6 @@ "project.download.no-app": { "message": "¿No tienes la Modrinth App?" }, - "project.download.no-versions-available": { - "message": "No hay versiones disponibles para {gameVersion} y {platform}." - }, "project.download.platform-unsupported-tooltip": { "message": "{title} no soporta {platform} para {gameVersion}" }, diff --git a/apps/frontend/src/locales/es-ES/index.json b/apps/frontend/src/locales/es-ES/index.json index 0e8c91024c..32f5d87670 100644 --- a/apps/frontend/src/locales/es-ES/index.json +++ b/apps/frontend/src/locales/es-ES/index.json @@ -3107,9 +3107,6 @@ "project.download.no-app": { "message": "¿No tienes la aplicación Modrinth?" }, - "project.download.no-versions-available": { - "message": "No hay versiones disponibles para {gameVersion} y {platform}." - }, "project.download.platform-unsupported-tooltip": { "message": "{title} no está soportado para {platform} en la {gameVersion}" }, diff --git a/apps/frontend/src/locales/fil-PH/index.json b/apps/frontend/src/locales/fil-PH/index.json index f756d471c1..dea2d43e06 100644 --- a/apps/frontend/src/locales/fil-PH/index.json +++ b/apps/frontend/src/locales/fil-PH/index.json @@ -2414,9 +2414,6 @@ "project.download.no-app": { "message": "Wala kang Modrinth App?" }, - "project.download.no-versions-available": { - "message": "Walang bersiyong magagamit para sa {gameVersion} at {platform}." - }, "project.download.platform-unsupported-tooltip": { "message": "Hindi masuport ng {title} ang {platform} para sa {gameVersion}" }, diff --git a/apps/frontend/src/locales/fr-FR/index.json b/apps/frontend/src/locales/fr-FR/index.json index ffde04f70d..995ecea250 100644 --- a/apps/frontend/src/locales/fr-FR/index.json +++ b/apps/frontend/src/locales/fr-FR/index.json @@ -3227,9 +3227,6 @@ "project.download.no-app": { "message": "Vous n'avez pas Modrinth App ?" }, - "project.download.no-versions-available": { - "message": "Aucune version disponible pour {gameVersion} et {platform}." - }, "project.download.platform-unsupported-tooltip": { "message": "{title} ne supporte pas {platform} pour {gameVersion}" }, diff --git a/apps/frontend/src/locales/he-IL/index.json b/apps/frontend/src/locales/he-IL/index.json index 6756b68e1b..5e68394a62 100644 --- a/apps/frontend/src/locales/he-IL/index.json +++ b/apps/frontend/src/locales/he-IL/index.json @@ -2033,9 +2033,6 @@ "project.download.no-app": { "message": "אין לכם את אפליקציית Modrinth?" }, - "project.download.no-versions-available": { - "message": "אין גרסאות זמינות עבור {gameVersion} ו-{platform}." - }, "project.download.platform-unsupported-tooltip": { "message": "{title} אינו תומך ב-{platform} עבור {gameVersion}" }, diff --git a/apps/frontend/src/locales/hu-HU/index.json b/apps/frontend/src/locales/hu-HU/index.json index 732216fd39..fab8e3572e 100644 --- a/apps/frontend/src/locales/hu-HU/index.json +++ b/apps/frontend/src/locales/hu-HU/index.json @@ -2924,9 +2924,6 @@ "project.download.no-app": { "message": "Nincs meg a Modrinth App? " }, - "project.download.no-versions-available": { - "message": "Nem érhető el verzió ehhez: {platform} {gameVersion}" - }, "project.download.platform-unsupported-tooltip": { "message": "A(z) {title} nem támogatja ezt a verziót: {platform} {gameVersion}" }, diff --git a/apps/frontend/src/locales/id-ID/index.json b/apps/frontend/src/locales/id-ID/index.json index 40282c8733..3e3559a688 100644 --- a/apps/frontend/src/locales/id-ID/index.json +++ b/apps/frontend/src/locales/id-ID/index.json @@ -2429,9 +2429,6 @@ "project.download.no-app": { "message": "Tidak memiliki Modrinth App?" }, - "project.download.no-versions-available": { - "message": "Tidak ada versi tersedia untuk {gameVersion} dan {platform}." - }, "project.download.platform-unsupported-tooltip": { "message": "{title} tidak mendukung {platform} untuk {gameVersion}" }, diff --git a/apps/frontend/src/locales/it-IT/index.json b/apps/frontend/src/locales/it-IT/index.json index 34d73900ab..e3b34e3e14 100644 --- a/apps/frontend/src/locales/it-IT/index.json +++ b/apps/frontend/src/locales/it-IT/index.json @@ -3218,9 +3218,6 @@ "project.download.no-app": { "message": "Non hai Modrinth App?" }, - "project.download.no-versions-available": { - "message": "Nessuna versione disponibile per {gameVersion} e {platform}." - }, "project.download.platform-unsupported-tooltip": { "message": "{title} non supporta {platform} per {gameVersion}" }, diff --git a/apps/frontend/src/locales/ja-JP/index.json b/apps/frontend/src/locales/ja-JP/index.json index 7bcc3f7b10..d065a5d559 100644 --- a/apps/frontend/src/locales/ja-JP/index.json +++ b/apps/frontend/src/locales/ja-JP/index.json @@ -2735,9 +2735,6 @@ "project.download.no-app": { "message": "Modrinth Appをお持ちでないですか?" }, - "project.download.no-versions-available": { - "message": "{gameVersion}および{platform}向けのバージョンは利用できません。" - }, "project.download.platform-unsupported-tooltip": { "message": "{title}は{gameVersion}の{platform}に対応していません" }, diff --git a/apps/frontend/src/locales/ko-KR/index.json b/apps/frontend/src/locales/ko-KR/index.json index c8ee976fa5..5e231b3a8c 100644 --- a/apps/frontend/src/locales/ko-KR/index.json +++ b/apps/frontend/src/locales/ko-KR/index.json @@ -2549,9 +2549,6 @@ "project.download.no-app": { "message": "Modrinth 앱을 설치하지 않으셨나요?" }, - "project.download.no-versions-available": { - "message": "{gameVersion} 및 {platform}용 버전이 없습니다." - }, "project.download.platform-unsupported-tooltip": { "message": "{title} 은(는) {gameVersion} 용 {platform} 을(를) 지원하지 않습니다." }, diff --git a/apps/frontend/src/locales/ms-MY/index.json b/apps/frontend/src/locales/ms-MY/index.json index 251063f253..0457b18de8 100644 --- a/apps/frontend/src/locales/ms-MY/index.json +++ b/apps/frontend/src/locales/ms-MY/index.json @@ -2924,9 +2924,6 @@ "project.download.no-app": { "message": "Tidak ada Modrinth App?" }, - "project.download.no-versions-available": { - "message": "Tiada versi tersedia untuk {gameVersion} dan {platform}." - }, "project.download.platform-unsupported-tooltip": { "message": "{title} tidak menyokong {platform} untuk {gameVersion}" }, diff --git a/apps/frontend/src/locales/nl-NL/index.json b/apps/frontend/src/locales/nl-NL/index.json index a59c7b89c8..0c86ebd39c 100644 --- a/apps/frontend/src/locales/nl-NL/index.json +++ b/apps/frontend/src/locales/nl-NL/index.json @@ -2798,9 +2798,6 @@ "project.download.no-app": { "message": "Heb je de Modrinth App niet?" }, - "project.download.no-versions-available": { - "message": "Geen versies beschikbaar voor {gameVersion} en {platform}." - }, "project.download.platform-unsupported-tooltip": { "message": "{title} steunt niet {platform} voor {gameVersion}" }, diff --git a/apps/frontend/src/locales/no-NO/index.json b/apps/frontend/src/locales/no-NO/index.json index 13a5637f03..b245d68e2b 100644 --- a/apps/frontend/src/locales/no-NO/index.json +++ b/apps/frontend/src/locales/no-NO/index.json @@ -2255,9 +2255,6 @@ "project.download.no-app": { "message": "Har du ikke en Modrinth App?" }, - "project.download.no-versions-available": { - "message": "Ingen versjoner tilgjengelige for {gameVersion} og {platform}." - }, "project.download.platform-unsupported-tooltip": { "message": "{title} støtter ikke {platform} for {gameVersion}" }, diff --git a/apps/frontend/src/locales/pl-PL/index.json b/apps/frontend/src/locales/pl-PL/index.json index 0af0770c02..07daffa118 100644 --- a/apps/frontend/src/locales/pl-PL/index.json +++ b/apps/frontend/src/locales/pl-PL/index.json @@ -3221,9 +3221,6 @@ "project.download.no-app": { "message": "Nie masz Modrinth App?" }, - "project.download.no-versions-available": { - "message": "Brak dostępnych wersji dla {gameVersion} i {platform}." - }, "project.download.platform-unsupported-tooltip": { "message": "{title} nie obsługuje {platform} dla {gameVersion}" }, diff --git a/apps/frontend/src/locales/pt-BR/index.json b/apps/frontend/src/locales/pt-BR/index.json index a64f36b0b9..961ee1b07f 100644 --- a/apps/frontend/src/locales/pt-BR/index.json +++ b/apps/frontend/src/locales/pt-BR/index.json @@ -3218,9 +3218,6 @@ "project.download.no-app": { "message": "Não tem o Modrinth App?" }, - "project.download.no-versions-available": { - "message": "Nenhuma versão disponível para {gameVersion} e {platform}." - }, "project.download.platform-unsupported-tooltip": { "message": "{title} não suporta {platform} para {gameVersion}" }, diff --git a/apps/frontend/src/locales/pt-PT/index.json b/apps/frontend/src/locales/pt-PT/index.json index a0b2b31ff5..bee9a54373 100644 --- a/apps/frontend/src/locales/pt-PT/index.json +++ b/apps/frontend/src/locales/pt-PT/index.json @@ -2228,9 +2228,6 @@ "project.download.no-app": { "message": "Não tens a Modrinth App?" }, - "project.download.no-versions-available": { - "message": "Nenhuma versão disponível para {gameVersion} e {platform}." - }, "project.download.platform-unsupported-tooltip": { "message": "{title} não suporta {platform} para {gameVersion}" }, diff --git a/apps/frontend/src/locales/ro-RO/index.json b/apps/frontend/src/locales/ro-RO/index.json index 8431bf39fe..5d46c15daa 100644 --- a/apps/frontend/src/locales/ro-RO/index.json +++ b/apps/frontend/src/locales/ro-RO/index.json @@ -1421,9 +1421,6 @@ "project.download.no-app": { "message": "Nu ai Modrinth App?" }, - "project.download.no-versions-available": { - "message": "Nu există versiuni disponibile pentru {gameVersion} și {platform}." - }, "project.download.platform-unsupported-tooltip": { "message": "{title} nu este compatibil cu {platform} pentru {gameVersion}" }, diff --git a/apps/frontend/src/locales/ru-RU/index.json b/apps/frontend/src/locales/ru-RU/index.json index f878f76674..2c75b0147c 100644 --- a/apps/frontend/src/locales/ru-RU/index.json +++ b/apps/frontend/src/locales/ru-RU/index.json @@ -3221,9 +3221,6 @@ "project.download.no-app": { "message": "У вас нет Modrinth App?" }, - "project.download.no-versions-available": { - "message": "Нет версий, доступных для {gameVersion} и {platform}." - }, "project.download.platform-unsupported-tooltip": { "message": "{title} не поддерживает {platform} для {gameVersion}" }, diff --git a/apps/frontend/src/locales/sv-SE/index.json b/apps/frontend/src/locales/sv-SE/index.json index 8fe38cac45..161ccbd84d 100644 --- a/apps/frontend/src/locales/sv-SE/index.json +++ b/apps/frontend/src/locales/sv-SE/index.json @@ -2810,9 +2810,6 @@ "project.download.no-app": { "message": "Har du inte Modrinth appen?" }, - "project.download.no-versions-available": { - "message": "Inga versioner finns tillgängliga för {gameVersion} och {platform}." - }, "project.download.platform-unsupported-tooltip": { "message": "{title} stöttar inte {platform} för {gameVersion}" }, diff --git a/apps/frontend/src/locales/tr-TR/index.json b/apps/frontend/src/locales/tr-TR/index.json index 40168ccde6..141fe81e56 100644 --- a/apps/frontend/src/locales/tr-TR/index.json +++ b/apps/frontend/src/locales/tr-TR/index.json @@ -3167,9 +3167,6 @@ "project.download.no-app": { "message": "Modrinth App Yok Mu?" }, - "project.download.no-versions-available": { - "message": "{gameVersion} ve {platform} için sürüm mevcut değil." - }, "project.download.platform-unsupported-tooltip": { "message": "{title}, {gameVersion} sürümünde {platform} desteklemiyor" }, diff --git a/apps/frontend/src/locales/uk-UA/index.json b/apps/frontend/src/locales/uk-UA/index.json index c1e88501c9..100031e9ad 100644 --- a/apps/frontend/src/locales/uk-UA/index.json +++ b/apps/frontend/src/locales/uk-UA/index.json @@ -2855,9 +2855,6 @@ "project.download.no-app": { "message": "Не маєте Modrinth App?" }, - "project.download.no-versions-available": { - "message": "Немає доступних версій для {gameVersion} та {platform}." - }, "project.download.platform-unsupported-tooltip": { "message": "{title} не підтримує {platform} для {gameVersion}" }, diff --git a/apps/frontend/src/locales/vi-VN/index.json b/apps/frontend/src/locales/vi-VN/index.json index 1f8509c7b1..5c32e31311 100644 --- a/apps/frontend/src/locales/vi-VN/index.json +++ b/apps/frontend/src/locales/vi-VN/index.json @@ -3071,9 +3071,6 @@ "project.download.no-app": { "message": "Chưa có Ứng dụng Modrinth?" }, - "project.download.no-versions-available": { - "message": "Không có phiên bản khả dụng cho {gameVersion} và {platform}." - }, "project.download.platform-unsupported-tooltip": { "message": "{title} không hỗ trợ {platform} cho {gameVersion}" }, diff --git a/apps/frontend/src/locales/zh-CN/index.json b/apps/frontend/src/locales/zh-CN/index.json index 658b82c717..19a25cc242 100644 --- a/apps/frontend/src/locales/zh-CN/index.json +++ b/apps/frontend/src/locales/zh-CN/index.json @@ -3221,9 +3221,6 @@ "project.download.no-app": { "message": "还没有 Modrinth App 吗?" }, - "project.download.no-versions-available": { - "message": "没有支持 {platform} {gameVersion} 的版本。" - }, "project.download.platform-unsupported-tooltip": { "message": "{title} 不支持 {gameVersion} 的 {platform}" }, diff --git a/apps/frontend/src/locales/zh-TW/index.json b/apps/frontend/src/locales/zh-TW/index.json index 41986af4f0..ada90b1d03 100644 --- a/apps/frontend/src/locales/zh-TW/index.json +++ b/apps/frontend/src/locales/zh-TW/index.json @@ -3227,9 +3227,6 @@ "project.download.no-app": { "message": "還沒有 Modrinth App 嗎?" }, - "project.download.no-versions-available": { - "message": "{platform} {gameVersion} 沒有可用的版本。" - }, "project.download.platform-unsupported-tooltip": { "message": "{title} 不支援 {platform} {gameVersion}" },