Fix offline db migration support (#21452)

* Fix offline db migration support

* Add error handling
This commit is contained in:
Erik Montnemery 2024-07-23 11:47:47 +02:00 committed by GitHub
parent 87ba0e73dd
commit 79618ce114
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -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);
}
}