mirror of
https://github.com/home-assistant/frontend.git
synced 2025-07-24 09:46:36 +00:00
Fix offline db migration support (#21452)
* Fix offline db migration support * Add error handling
This commit is contained in:
parent
87ba0e73dd
commit
79618ce114
@ -200,24 +200,26 @@ export class HomeAssistantAppEl extends QuickBarMixin(HassElement) {
|
||||
}
|
||||
|
||||
protected async checkDataBaseMigration() {
|
||||
if (this.hass?.config?.components.includes("recorder")) {
|
||||
let recorderInfoProm: Promise<RecorderInfo> | undefined;
|
||||
const preloadWindow = window as WindowWithPreloads;
|
||||
// On first load, we speed up loading page by having recorderInfoProm ready
|
||||
if (preloadWindow.recorderInfoProm) {
|
||||
recorderInfoProm = preloadWindow.recorderInfoProm;
|
||||
preloadWindow.recorderInfoProm = undefined;
|
||||
}
|
||||
const info = await (recorderInfoProm ||
|
||||
getRecorderInfo(this.hass.connection));
|
||||
this._databaseMigration =
|
||||
info.migration_in_progress && !info.migration_is_live;
|
||||
if (this._databaseMigration) {
|
||||
// check every 5 seconds if the migration is done
|
||||
setTimeout(() => this.checkDataBaseMigration(), 5000);
|
||||
}
|
||||
} else {
|
||||
this._databaseMigration = false;
|
||||
let recorderInfoProm: Promise<RecorderInfo> | undefined;
|
||||
const preloadWindow = window as WindowWithPreloads;
|
||||
// On first load, we speed up loading page by having recorderInfoProm ready
|
||||
if (preloadWindow.recorderInfoProm) {
|
||||
recorderInfoProm = preloadWindow.recorderInfoProm;
|
||||
preloadWindow.recorderInfoProm = undefined;
|
||||
}
|
||||
const info = await (
|
||||
recorderInfoProm || getRecorderInfo(this.hass!.connection)
|
||||
).catch((err) => {
|
||||
// If the command failed with code unknown_command, recorder is not enabled,
|
||||
// otherwise re-throw the error
|
||||
if (err.code !== "unknown_command") throw err;
|
||||
return { migration_in_progress: false, migration_is_live: false };
|
||||
});
|
||||
this._databaseMigration =
|
||||
info.migration_in_progress && !info.migration_is_live;
|
||||
if (this._databaseMigration) {
|
||||
// check every 5 seconds if the migration is done
|
||||
setTimeout(() => this.checkDataBaseMigration(), 5000);
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user