mirror of
https://github.com/home-assistant/frontend.git
synced 2025-07-23 17:26:42 +00:00
Gracefully handle logbook retrieval errors (#9377)
This commit is contained in:
parent
6e50d1166a
commit
30d6c5eaf3
@ -29,6 +29,8 @@ export class MoreInfoLogbook extends LitElement {
|
||||
|
||||
private _fetchUserPromise?: Promise<void>;
|
||||
|
||||
private _error?: string;
|
||||
|
||||
private _throttleGetLogbookEntries = throttle(() => {
|
||||
this._getLogBookData();
|
||||
}, 10000);
|
||||
@ -45,7 +47,13 @@ export class MoreInfoLogbook extends LitElement {
|
||||
|
||||
return html`
|
||||
${isComponentLoaded(this.hass, "logbook")
|
||||
? !this._logbookEntries
|
||||
? this._error
|
||||
? html`<div class="no-entries">
|
||||
${`${this.hass.localize(
|
||||
"ui.components.logbook.retrieval_error"
|
||||
)}: ${this._error}`}
|
||||
</div>`
|
||||
: !this._logbookEntries
|
||||
? html`
|
||||
<ha-circular-progress
|
||||
active
|
||||
@ -119,17 +127,25 @@ export class MoreInfoLogbook extends LitElement {
|
||||
this._lastLogbookDate ||
|
||||
new Date(new Date().getTime() - 24 * 60 * 60 * 1000);
|
||||
const now = new Date();
|
||||
const [newEntries, traceContexts] = await Promise.all([
|
||||
getLogbookData(
|
||||
this.hass,
|
||||
lastDate.toISOString(),
|
||||
now.toISOString(),
|
||||
this.entityId,
|
||||
true
|
||||
),
|
||||
this.hass.user?.is_admin ? loadTraceContexts(this.hass) : {},
|
||||
this._fetchUserPromise,
|
||||
]);
|
||||
let newEntries;
|
||||
let traceContexts;
|
||||
|
||||
try {
|
||||
[newEntries, traceContexts] = await Promise.all([
|
||||
getLogbookData(
|
||||
this.hass,
|
||||
lastDate.toISOString(),
|
||||
now.toISOString(),
|
||||
this.entityId,
|
||||
true
|
||||
),
|
||||
this.hass.user?.is_admin ? loadTraceContexts(this.hass) : {},
|
||||
this._fetchUserPromise,
|
||||
]);
|
||||
} catch (err) {
|
||||
this._error = err.message;
|
||||
}
|
||||
|
||||
this._logbookEntries = this._logbookEntries
|
||||
? [...newEntries, ...this._logbookEntries]
|
||||
: newEntries;
|
||||
|
@ -19,6 +19,7 @@ import {
|
||||
} from "../../data/logbook";
|
||||
import { loadTraceContexts, TraceContexts } from "../../data/trace";
|
||||
import { fetchUsers } from "../../data/user";
|
||||
import { showAlertDialog } from "../../dialogs/generic/show-dialog-box";
|
||||
import "../../layouts/ha-app-layout";
|
||||
import { haStyle } from "../../resources/styles";
|
||||
import { HomeAssistant } from "../../types";
|
||||
@ -250,18 +251,28 @@ export class HaPanelLogbook extends LitElement {
|
||||
|
||||
private async _getData() {
|
||||
this._isLoading = true;
|
||||
const [entries, traceContexts] = await Promise.all([
|
||||
getLogbookData(
|
||||
this.hass,
|
||||
this._startDate.toISOString(),
|
||||
this._endDate.toISOString(),
|
||||
this._entityId
|
||||
),
|
||||
isComponentLoaded(this.hass, "trace") && this.hass.user?.is_admin
|
||||
? loadTraceContexts(this.hass)
|
||||
: {},
|
||||
this._fetchUserPromise,
|
||||
]);
|
||||
let entries;
|
||||
let traceContexts;
|
||||
|
||||
try {
|
||||
[entries, traceContexts] = await Promise.all([
|
||||
getLogbookData(
|
||||
this.hass,
|
||||
this._startDate.toISOString(),
|
||||
this._endDate.toISOString(),
|
||||
this._entityId
|
||||
),
|
||||
isComponentLoaded(this.hass, "trace") && this.hass.user?.is_admin
|
||||
? loadTraceContexts(this.hass)
|
||||
: {},
|
||||
this._fetchUserPromise,
|
||||
]);
|
||||
} catch (err) {
|
||||
showAlertDialog(this, {
|
||||
title: this.hass.localize("ui.components.logbook.retrieval_error"),
|
||||
text: err.message,
|
||||
});
|
||||
}
|
||||
|
||||
this._entries = entries;
|
||||
this._traceContexts = traceContexts;
|
||||
|
@ -66,6 +66,8 @@ export class HuiLogbookCard extends LitElement implements LovelaceCard {
|
||||
|
||||
private _fetchUserPromise?: Promise<void>;
|
||||
|
||||
private _error?: string;
|
||||
|
||||
private _throttleGetLogbookEntries = throttle(() => {
|
||||
this._getLogBookData();
|
||||
}, 10000);
|
||||
@ -187,7 +189,15 @@ export class HuiLogbookCard extends LitElement implements LovelaceCard {
|
||||
class=${classMap({ "no-header": !this._config!.title })}
|
||||
>
|
||||
<div class="content">
|
||||
${!this._logbookEntries
|
||||
${this._error
|
||||
? html`
|
||||
<div class="no-entries">
|
||||
${`${this.hass.localize(
|
||||
"ui.components.logbook.retrieval_error"
|
||||
)}: ${this._error}`}
|
||||
</div>
|
||||
`
|
||||
: !this._logbookEntries
|
||||
? html`
|
||||
<ha-circular-progress
|
||||
active
|
||||
@ -231,17 +241,22 @@ export class HuiLogbookCard extends LitElement implements LovelaceCard {
|
||||
);
|
||||
const lastDate = this._lastLogbookDate || hoursToShowDate;
|
||||
const now = new Date();
|
||||
let newEntries;
|
||||
|
||||
const [newEntries] = await Promise.all([
|
||||
getLogbookData(
|
||||
this.hass,
|
||||
lastDate.toISOString(),
|
||||
now.toISOString(),
|
||||
this._configEntities!.map((entity) => entity.entity).toString(),
|
||||
true
|
||||
),
|
||||
this._fetchUserPromise,
|
||||
]);
|
||||
try {
|
||||
newEntries = await Promise.all([
|
||||
getLogbookData(
|
||||
this.hass,
|
||||
lastDate.toISOString(),
|
||||
now.toISOString(),
|
||||
this._configEntities!.map((entity) => entity.entity).toString(),
|
||||
true
|
||||
),
|
||||
this._fetchUserPromise,
|
||||
]);
|
||||
} catch (err) {
|
||||
this._error = err.message;
|
||||
}
|
||||
|
||||
const logbookEntries = this._logbookEntries
|
||||
? [...newEntries, ...this._logbookEntries]
|
||||
|
@ -304,6 +304,7 @@
|
||||
"by": "by",
|
||||
"by_service": "by service",
|
||||
"show_trace": "Show trace",
|
||||
"retrieval_error": "Error during logbook entry retrieval",
|
||||
"messages": {
|
||||
"was_away": "was detected away",
|
||||
"was_at_state": "was detected at {state}",
|
||||
|
Loading…
x
Reference in New Issue
Block a user