From 0623e7dce40f722d68df9d0e75be03bfccbe1101 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joakim=20S=C3=B8rensen?= Date: Mon, 23 May 2022 20:00:16 +0200 Subject: [PATCH] Fetch supervisor info directly (#12751) --- .../src/addon-view/hassio-addon-dashboard.ts | 65 ++++++++++--------- 1 file changed, 35 insertions(+), 30 deletions(-) diff --git a/hassio/src/addon-view/hassio-addon-dashboard.ts b/hassio/src/addon-view/hassio-addon-dashboard.ts index 22e5bb32c9..6f4580870f 100644 --- a/hassio/src/addon-view/hassio-addon-dashboard.ts +++ b/hassio/src/addon-view/hassio-addon-dashboard.ts @@ -17,7 +17,10 @@ import { HassioAddonDetails, } from "../../../src/data/hassio/addon"; import { extractApiErrorMessage } from "../../../src/data/hassio/common"; -import { setSupervisorOption } from "../../../src/data/hassio/supervisor"; +import { + fetchHassioSupervisorInfo, + setSupervisorOption, +} from "../../../src/data/hassio/supervisor"; import { Supervisor } from "../../../src/data/supervisor/supervisor"; import { showConfirmationDialog } from "../../../src/dialogs/generic/show-dialog-box"; import "../../../src/layouts/hass-error-screen"; @@ -169,38 +172,40 @@ class HassioAddonDashboard extends LitElement { if (this.route.path === "") { const requestedAddon = extractSearchParam("addon"); const requestedAddonRepository = extractSearchParam("repository_url"); - if ( - requestedAddonRepository && - !this.supervisor.supervisor.addons_repositories.find( - (repo) => repo === requestedAddonRepository - ) - ) { + if (requestedAddonRepository) { + const supervisorInfo = await fetchHassioSupervisorInfo(this.hass); if ( - !(await showConfirmationDialog(this, { - title: this.supervisor.localize("my.add_addon_repository_title"), - text: this.supervisor.localize( - "my.add_addon_repository_description", - { addon: requestedAddon, repository: requestedAddonRepository } - ), - confirmText: this.supervisor.localize("common.add"), - dismissText: this.supervisor.localize("common.cancel"), - })) + !supervisorInfo.addons_repositories.find( + (repo) => repo === requestedAddonRepository + ) ) { - this._error = this.supervisor.localize( - "my.error_repository_not_found" - ); - return; - } + if ( + !(await showConfirmationDialog(this, { + title: this.supervisor.localize("my.add_addon_repository_title"), + text: this.supervisor.localize( + "my.add_addon_repository_description", + { addon: requestedAddon, repository: requestedAddonRepository } + ), + confirmText: this.supervisor.localize("common.add"), + dismissText: this.supervisor.localize("common.cancel"), + })) + ) { + this._error = this.supervisor.localize( + "my.error_repository_not_found" + ); + return; + } - try { - await setSupervisorOption(this.hass, { - addons_repositories: [ - ...this.supervisor.supervisor.addons_repositories, - requestedAddonRepository, - ], - }); - } catch (err: any) { - this._error = extractApiErrorMessage(err); + try { + await setSupervisorOption(this.hass, { + addons_repositories: [ + ...supervisorInfo.addons_repositories, + requestedAddonRepository, + ], + }); + } catch (err: any) { + this._error = extractApiErrorMessage(err); + } } }