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 { `