generated from Dicken/dickendock
round31: Infrastruktur-Praefixe (lxc/vm/docker) aus Namen und Suche entfernt, Icon-Datenbank-Abgleich auch ohne erkannte Software, Sichtbarkeit bei eindeutigem Icon-Treffer
This commit is contained in:
@@ -172,6 +172,26 @@ export async function findBestIconMatch(name: string): Promise<string | null> {
|
||||
if (match) return `${CDN_BASE}/${match}.png`;
|
||||
}
|
||||
|
||||
// Letzter, bewusst noch immer präziser Versuch: ein Name wie "adguard"
|
||||
// trifft "adguard-home" nicht exakt (auch nicht nach Bindestrich-Vergleich),
|
||||
// ist aber ein eindeutiger Wortanfang-Treffer, wenn KEIN anderer Icon-Name
|
||||
// mit "<wort>-" beginnt. Nur dann automatisch übernehmen - bei mehreren
|
||||
// möglichen Treffern bleibt es bei "kein Favicon" (dafür gibt es die
|
||||
// interaktive Auswahl mit mehreren Kandidaten).
|
||||
for (const candidate of [wholeName, ...byPriority(words)]) {
|
||||
if (candidate.length < 3) continue;
|
||||
const prefixMatches = names.filter((n) => n === candidate || n.startsWith(`${candidate}-`));
|
||||
if (prefixMatches.length === 1) return `${CDN_BASE}/${prefixMatches[0]}.png`;
|
||||
if (prefixMatches.length > 1) {
|
||||
// Mehrere Treffer (z. B. "adguard-home" UND "adguard-home-sync" für
|
||||
// "adguard") - den kürzesten (meist der "Haupt"-Name der Software)
|
||||
// automatisch nehmen, aber NUR wenn er eindeutig der kürzeste ist,
|
||||
// sonst bleibt es zweideutig (dafür gibt es die interaktive Auswahl).
|
||||
const sorted = [...prefixMatches].sort((a, b) => a.length - b.length);
|
||||
if (sorted[0].length < sorted[1].length) return `${CDN_BASE}/${sorted[0]}.png`;
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user