load files from urls/ids once local ones are loaded

This commit is contained in:
vcoppe
2025-11-12 09:02:09 +01:00
parent 0f7f64fb2f
commit c4c64c8fe8
2 changed files with 65 additions and 57 deletions

View File

@@ -56,8 +56,12 @@ export class GPXFileStateCollection {
this._files = writable(new Map());
}
connectToDatabase(db: Database) {
if (this._subscription) return;
connectToDatabase(db: Database): Promise<void> {
return new Promise((resolve) => {
if (this._subscription) {
resolve();
return;
}
this._subscription = liveQuery(() => db.fileids.toArray()).subscribe((dbFileIds) => {
const currentFiles = get(this._files);
// Find new files to observe
@@ -85,7 +89,9 @@ export class GPXFileStateCollection {
});
// Update the file order
let fileOrder = get(settings.fileOrder).filter((id) => !deletedFiles.includes(id));
let fileOrder = get(settings.fileOrder).filter(
(id) => !deletedFiles.includes(id)
);
newFiles.forEach((id) => {
if (!fileOrder.includes(id)) {
fileOrder.push(id);
@@ -93,6 +99,8 @@ export class GPXFileStateCollection {
});
settings.fileOrder.set(fileOrder);
}
resolve();
});
});
}

View File

@@ -32,7 +32,9 @@
elevationFill,
} = settings;
onMount(() => {
onMount(async () => {
settings.connectToDatabase(db);
fileStateCollection.connectToDatabase(db).then(() => {
let files: string[] = JSON.parse(page.url.searchParams.get('files') || '[]');
let ids: string[] = JSON.parse(page.url.searchParams.get('ids') || '[]');
let urls: string[] = files.concat(ids.map(getURLForGoogleDriveFile));
@@ -51,9 +53,7 @@
loadFiles(files.filter((file) => file !== null));
});
}
settings.connectToDatabase(db);
fileStateCollection.connectToDatabase(db);
});
});
onDestroy(() => {