feat: only show duplicate tooltip if there are duplicates

This commit is contained in:
tdgao
2026-07-04 14:38:20 -07:00
parent 6bc791d3b5
commit 18ac7e39ad
@@ -4,7 +4,7 @@
<h3 class="m-0 flex items-center gap-1.5 text-base font-semibold text-contrast">
{{ sectionTitle }}
<InfoIcon
v-if="visibleDependencyRows.length > 0"
v-if="duplicateDependencyRowsHidden"
v-tooltip="formatMessage(messages.duplicateDependenciesHidden)"
aria-hidden="true"
class="size-4 text-secondary"
@@ -253,6 +253,10 @@ const visibleDependencyRows = computed<DownloadDependencyRow[]>(() =>
dedupeDependencyRows(dependencyRows.value),
)
const duplicateDependencyRowsHidden = computed(() =>
hasDuplicateDependencyRows(dependencyRows.value),
)
const additionalFileRows = computed<DownloadDependencyRow[]>(() =>
props.additionalFiles.map((file) => ({
key: `additional-file-${additionalFileKey(file)}`,
@@ -396,6 +400,20 @@ function dependencyRowIdentity(row: DownloadDependencyRow) {
return row.projectHref ?? row.downloadHref ?? row.key
}
function hasDuplicateDependencyRows(
rows: DownloadDependencyRow[],
seenDependencies = new Set<string>(),
): boolean {
for (const row of rows) {
const rowId = dependencyRowIdentity(row)
if (seenDependencies.has(rowId)) return true
seenDependencies.add(rowId)
if (hasDuplicateDependencyRows(row.dependencies, seenDependencies)) return true
}
return false
}
function collectDownloadableDependencyFiles(
rows: DownloadDependencyRow[],
seenHrefs = new Set<string>(),