From 52a1594969a64ef4bdf0d992d7c8be16c79e9ee8 Mon Sep 17 00:00:00 2001 From: Steve Repsher Date: Sat, 20 Aug 2022 13:37:57 -0400 Subject: [PATCH] Remove all exceptions from supervisor localize keys (#13402) --- hassio/src/addon-view/info/hassio-addon-info.ts | 3 ++- hassio/src/components/supervisor-backup-content.ts | 11 +++++++---- src/data/hassio/addon.ts | 6 +++++- src/data/hassio/resolution.ts | 6 +++--- src/data/supervisor/store.ts | 4 ++-- src/data/supervisor/supervisor.ts | 4 +--- src/translations/en.json | 1 + 7 files changed, 21 insertions(+), 14 deletions(-) diff --git a/hassio/src/addon-view/info/hassio-addon-info.ts b/hassio/src/addon-view/info/hassio-addon-info.ts index 6675d7fd55..3753b8a42d 100644 --- a/hassio/src/addon-view/info/hassio-addon-info.ts +++ b/hassio/src/addon-view/info/hassio-addon-info.ts @@ -40,6 +40,7 @@ import "../../../../src/components/ha-settings-row"; import "../../../../src/components/ha-svg-icon"; import "../../../../src/components/ha-switch"; import { + AddonCapability, fetchHassioAddonChangelog, fetchHassioAddonInfo, HassioAddonDetails, @@ -701,7 +702,7 @@ class HassioAddonInfo extends LitElement { } private _showMoreInfo(ev): void { - const id = ev.currentTarget.id; + const id = ev.currentTarget.id as AddonCapability; showHassioMarkdownDialog(this, { title: this.supervisor.localize(`addon.dashboard.capability.${id}.title`), content: diff --git a/hassio/src/components/supervisor-backup-content.ts b/hassio/src/components/supervisor-backup-content.ts index cea5951729..03df51bbe2 100644 --- a/hassio/src/components/supervisor-backup-content.ts +++ b/hassio/src/components/supervisor-backup-content.ts @@ -17,9 +17,12 @@ import { } from "../../../src/data/hassio/backup"; import { Supervisor } from "../../../src/data/supervisor/supervisor"; import { PolymerChangedEvent } from "../../../src/polymer-types"; -import { HomeAssistant } from "../../../src/types"; +import { HomeAssistant, TranslationDict } from "../../../src/types"; import "./supervisor-formfield-label"; +type BackupOrRestoreKey = keyof TranslationDict["supervisor"]["backup"] & + keyof TranslationDict["ui"]["panel"]["page-onboarding"]["restore"]; + interface CheckboxItem { slug: string; checked: boolean; @@ -108,9 +111,9 @@ export class SupervisorBackupContent extends LitElement { this._focusTarget?.focus(); } - private _localize = (string: string) => - this.supervisor?.localize(`backup.${string}`) || - this.localize!(`ui.panel.page-onboarding.restore.${string}`); + private _localize = (key: BackupOrRestoreKey) => + this.supervisor?.localize(`backup.${key}`) || + this.localize!(`ui.panel.page-onboarding.restore.${key}`); protected render(): TemplateResult { if (!this.onboarding && !this.supervisor) { diff --git a/src/data/hassio/addon.ts b/src/data/hassio/addon.ts index 5c1e7f49c2..a1a0828dd9 100644 --- a/src/data/hassio/addon.ts +++ b/src/data/hassio/addon.ts @@ -1,6 +1,6 @@ import { atLeastVersion } from "../../common/config/version"; import type { HaFormSchema } from "../../components/ha-form/types"; -import { HomeAssistant } from "../../types"; +import { HomeAssistant, TranslationDict } from "../../types"; import { supervisorApiCall } from "../supervisor/common"; import { StoreAddonDetails } from "../supervisor/store"; import { Supervisor, SupervisorArch } from "../supervisor/supervisor"; @@ -10,6 +10,10 @@ import { HassioResponse, } from "./common"; +export type AddonCapability = Exclude< + keyof TranslationDict["supervisor"]["addon"]["dashboard"]["capability"], + "label" | "role" | "stages" +>; export type AddonStage = "stable" | "experimental" | "deprecated"; export type AddonAppArmour = "disable" | "default" | "profile"; export type AddonRole = "default" | "homeassistant" | "manager" | "admin"; diff --git a/src/data/hassio/resolution.ts b/src/data/hassio/resolution.ts index f5b002a289..e6ff08f274 100644 --- a/src/data/hassio/resolution.ts +++ b/src/data/hassio/resolution.ts @@ -1,10 +1,10 @@ import { atLeastVersion } from "../../common/config/version"; -import { HomeAssistant } from "../../types"; +import { HomeAssistant, TranslationDict } from "../../types"; import { hassioApiResultExtractor, HassioResponse } from "./common"; export interface HassioResolution { - unsupported: string[]; - unhealthy: string[]; + unsupported: (keyof TranslationDict["supervisor"]["system"]["supervisor"]["unsupported_reason"])[]; + unhealthy: (keyof TranslationDict["supervisor"]["system"]["supervisor"]["unhealthy_reason"])[]; issues: string[]; suggestions: string[]; } diff --git a/src/data/supervisor/store.ts b/src/data/supervisor/store.ts index d71f96401c..b777009caa 100644 --- a/src/data/supervisor/store.ts +++ b/src/data/supervisor/store.ts @@ -1,5 +1,5 @@ import { HomeAssistant } from "../../types"; -import { AddonStage } from "../hassio/addon"; +import { AddonRole, AddonStage } from "../hassio/addon"; import { supervisorApiCall } from "./common"; import { SupervisorArch } from "./supervisor"; @@ -31,7 +31,7 @@ export interface StoreAddonDetails extends StoreAddon { documentation: boolean; full_access: boolean; hassio_api: boolean; - hassio_role: string; + hassio_role: AddonRole; homeassistant_api: boolean; host_network: boolean; host_pid: boolean; diff --git a/src/data/supervisor/supervisor.ts b/src/data/supervisor/supervisor.ts index 2610c76fda..6b15e87f96 100644 --- a/src/data/supervisor/supervisor.ts +++ b/src/data/supervisor/supervisor.ts @@ -60,9 +60,7 @@ export interface SupervisorEvent { [key: string]: any; } -export type SupervisorKeys = - | FlattenObjectKeys - | `${keyof TranslationDict["supervisor"]}.${string}`; +export type SupervisorKeys = FlattenObjectKeys; export interface Supervisor { host: HassioHostInfo; diff --git a/src/translations/en.json b/src/translations/en.json index a5a31809f8..2fbd93aee1 100755 --- a/src/translations/en.json +++ b/src/translations/en.json @@ -4564,6 +4564,7 @@ "hide_log": "Hide full log", "full_backup": "[%key:supervisor::backup::full_backup%]", "partial_backup": "[%key:supervisor::backup::partial_backup%]", + "name": "[%key:supervisor::backup::name%]", "type": "[%key:supervisor::backup::type%]", "select_type": "[%key:supervisor::backup::select_type%]", "folders": "[%key:supervisor::backup::folders%]",