feat: implement incompatible options due to base project

This commit is contained in:
tdgao
2026-07-02 14:28:30 -07:00
parent 58d195da77
commit 6353fbb370
3 changed files with 131 additions and 30 deletions
@@ -374,7 +374,7 @@
v-else-if="dependency.project"
v-tooltip="formatMessage(messages.downloadProject)"
:aria-label="formatMessage(messages.downloadProject)"
@click="openDependencyDownloadModal(dependency.project.id, $event)"
@click="openDependencyDownloadModal(dependency.project, $event)"
>
<DownloadIcon />
</button>
@@ -804,8 +804,20 @@ function handleOpenEditVersionModal(versionId: string, projectId: string, stageI
editModal.value?.openEditVersionModal(versionId, projectId, stageId)
}
function openDependencyDownloadModal(projectId: string, event: MouseEvent) {
dependencyDownloadModal.value?.show(event, projectId)
function openDependencyDownloadModal(
dependencyProject: Labrinth.Projects.v2.Project,
event: MouseEvent,
) {
const baseGameVersions = new Set(version.value?.game_versions ?? [])
const baseLoaders = new Set(dependencyResolutionLoaders.value)
dependencyDownloadModal.value?.show(event, {
projectId: dependencyProject.id,
incompatibleGameVersions: dependencyProject.game_versions.filter(
(gameVersion) => !baseGameVersions.has(gameVersion),
),
incompatibleLoaders: dependencyProject.loaders.filter((loader) => !baseLoaders.has(loader)),
})
}
const deleteVersionMutation = useMutation({