mirror of
https://github.com/fluxerapp/fluxer
synced 2026-10-17 21:15:32 +09:00
fix(app): repair theme CSS sync persistence and data loss (#2067)
This commit is contained in:
1 parent
14de5971d5
commit
9ad026b8ce
4 files changed
+35
-5
No files matched your search
@@ -125,6 +125,7 @@ class ThemeLibrary {
|
||||
localFiles: Array<ThemeLibraryLocalFileReference> = [];
|
||||
enabledThemeIds: Array<string> = [];
|
||||
isHydrated = false;
|
||||
loadFailed = false;
|
||||
isBusy = false;
|
||||
revision = 0;
|
||||
private initPromise: Promise<void> | null = null;
|
||||
@@ -173,12 +174,13 @@ class ThemeLibrary {
|
||||
this.localFiles = localFiles.sort((a, b) => a.name.localeCompare(b.name));
|
||||
this.enabledThemeIds = enabledThemeIds.filter((id) => themes.some((theme) => theme.id === id));
|
||||
this.isHydrated = true;
|
||||
this.loadFailed = false;
|
||||
this.revision += 1;
|
||||
});
|
||||
} catch (error) {
|
||||
logger.error('Failed to hydrate theme library', error);
|
||||
runInAction(() => {
|
||||
this.isHydrated = true;
|
||||
this.loadFailed = true;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -94,7 +94,7 @@ function getDatabase(): Promise<IDBDatabase> {
|
||||
if (openPromise) {
|
||||
return openPromise;
|
||||
}
|
||||
openPromise = new Promise((resolve, reject) => {
|
||||
const promise = new Promise<IDBDatabase>((resolve, reject) => {
|
||||
if (!browserIndexedDB) {
|
||||
reject(new Error('IndexedDB unavailable'));
|
||||
return;
|
||||
@@ -126,7 +126,13 @@ function getDatabase(): Promise<IDBDatabase> {
|
||||
request.onerror = () => reject(request.error ?? new Error('Failed to open theme library database'));
|
||||
request.onblocked = () => reject(new Error('Theme library database upgrade is blocked by another window'));
|
||||
});
|
||||
return openPromise;
|
||||
promise.catch(() => {
|
||||
if (openPromise === promise) {
|
||||
openPromise = null;
|
||||
}
|
||||
});
|
||||
openPromise = promise;
|
||||
return promise;
|
||||
}
|
||||
|
||||
async function withReadonlyDb<T>(
|
||||
|
||||
Reference in new issue
Block a user