From 67a393f57764db2b6e02564814a6028e5f3f1056 Mon Sep 17 00:00:00 2001 From: Timo Neumeier <77058548+neumeier-cloud@users.noreply.github.com> Date: Fri, 20 Mar 2026 21:59:52 +0100 Subject: [PATCH] Use local brands for installed integrations --- src/dashboards/hacs-dashboard.ts | 41 +++++++++++++++++++++++++++----- 1 file changed, 35 insertions(+), 6 deletions(-) diff --git a/src/dashboards/hacs-dashboard.ts b/src/dashboards/hacs-dashboard.ts index a42c4bb4..4b6db4f7 100644 --- a/src/dashboards/hacs-dashboard.ts +++ b/src/dashboards/hacs-dashboard.ts @@ -309,6 +309,38 @@ export class HacsDashboard extends LitElement { })), ); + private _repositoryBrandFallbackUrl(repository: RepositoryBase): string { + return brandsUrl({ + domain: repository.domain || "invalid", + type: "icon", + useFallback: true, + darkOptimized: this.hass.themes?.darkMode, + }); + } + + private _repositoryBrandUrl(repository: RepositoryBase): string { + if (!repository.installed || !repository.domain) { + return this._repositoryBrandFallbackUrl(repository); + } + + return `/api/brands/integration/${repository.domain}/icon.png`; + } + + private _handleRepositoryBrandError = (event: Event): void => { + const image = event.currentTarget; + if (!(image instanceof HTMLImageElement)) { + return; + } + + const fallbackSrc = image.dataset.fallbackSrc; + if (!fallbackSrc || image.getAttribute("src") === fallbackSrc) { + return; + } + + image.src = fallbackSrc; + image.removeAttribute("data-fallback-src"); + }; + private _columns = memoize( ( localizeFunc: LocalizeFunc, @@ -327,12 +359,9 @@ export class HacsDashboard extends LitElement { `