From b8bb0c038dee730684752d79b1449f83d4c45219 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Wed, 14 Apr 2021 11:59:00 -0700 Subject: [PATCH] Highlight if log comes from custom component (#8912) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Joakim Sørensen --- src/data/system_log.ts | 30 ++++++++--- .../config/logs/dialog-system-log-detail.ts | 53 +++++++++++++++++-- src/panels/config/logs/system-log-card.ts | 11 +++- src/translations/en.json | 4 +- 4 files changed, 85 insertions(+), 13 deletions(-) diff --git a/src/data/system_log.ts b/src/data/system_log.ts index 865558ebb9..f2acb5f82b 100644 --- a/src/data/system_log.ts +++ b/src/data/system_log.ts @@ -16,9 +16,27 @@ export interface LoggedError { export const fetchSystemLog = (hass: HomeAssistant) => hass.callApi("GET", "error/all"); -export const getLoggedErrorIntegration = (item: LoggedError) => - item.name.startsWith("homeassistant.components.") - ? item.name.split(".")[2] - : item.name.startsWith("custom_components.") - ? item.name.split(".")[1] - : undefined; +export const getLoggedErrorIntegration = (item: LoggedError) => { + // Try to derive from logger name + if (item.name.startsWith("homeassistant.components.")) { + return item.name.split(".")[2]; + } + if (item.name.startsWith("custom_components.")) { + return item.name.split(".")[1]; + } + + // Try to derive from logged location + if (item.source[0].startsWith("custom_components/")) { + return item.source[0].split("/")[1]; + } + + if (item.source[0].startsWith("homeassistant/components/")) { + return item.source[0].split("/")[2]; + } + + return undefined; +}; + +export const isCustomIntegrationError = (item: LoggedError) => + item.name.startsWith("custom_components.") || + item.source[0].startsWith("custom_components/"); diff --git a/src/panels/config/logs/dialog-system-log-detail.ts b/src/panels/config/logs/dialog-system-log-detail.ts index 90d4670eff..db8a33c244 100644 --- a/src/panels/config/logs/dialog-system-log-detail.ts +++ b/src/panels/config/logs/dialog-system-log-detail.ts @@ -1,5 +1,5 @@ import "@material/mwc-icon-button/mwc-icon-button"; -import { mdiClose, mdiContentCopy } from "@mdi/js"; +import { mdiClose, mdiContentCopy, mdiPackageVariant } from "@mdi/js"; import "@polymer/paper-tooltip/paper-tooltip"; import { css, @@ -21,7 +21,10 @@ import { integrationIssuesUrl, IntegrationManifest, } from "../../../data/integration"; -import { getLoggedErrorIntegration } from "../../../data/system_log"; +import { + getLoggedErrorIntegration, + isCustomIntegrationError, +} from "../../../data/system_log"; import { haStyleDialog } from "../../../resources/styles"; import type { HomeAssistant } from "../../../types"; import { showToast } from "../../../util/toast"; @@ -65,6 +68,12 @@ class DialogSystemLogDetail extends LitElement { const integration = getLoggedErrorIntegration(item); + const showDocumentation = + this._manifest && + (this._manifest.is_built_in || + // Custom components with our offical docs should not link to our docs + !this._manifest.documentation.includes("www.home-assistant.io")); + return html` @@ -86,6 +95,14 @@ class DialogSystemLogDetail extends LitElement { + ${this.isCustomIntegration + ? html`
+ + ${this.hass.localize( + "ui.panel.config.logs.error_from_custom_integration" + )} +
` + : ""}