From f8dea2a7f1bc726bf2c17f9b5136f78554915cdd Mon Sep 17 00:00:00 2001 From: vcoppe Date: Mon, 5 Aug 2024 17:43:27 +0200 Subject: [PATCH] only center map on files on page load and on file import, closes #36 --- website/src/lib/db.ts | 10 +++++++--- website/src/lib/stores.ts | 2 ++ 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/website/src/lib/db.ts b/website/src/lib/db.ts index 97a7d26b..f811e7c1 100644 --- a/website/src/lib/db.ts +++ b/website/src/lib/db.ts @@ -282,7 +282,14 @@ const fileState: Map = new Map(); // Used to generate patches // Observe the file ids in the database, and maintain a map of file observers for the corresponding files export function observeFilesFromDatabase() { + let initialize = true; liveQuery(() => db.fileids.toArray()).subscribe(dbFileIds => { + if (initialize) { + if (dbFileIds.length > 0) { + initTargetMapBounds(dbFileIds.length); + } + initialize = false; + } // Find new files to observe let newFiles = dbFileIds.filter(id => !get(fileObservers).has(id)).sort((a, b) => parseInt(a.split('-')[1]) - parseInt(b.split('-')[1])); // Find deleted files to stop observing @@ -291,9 +298,6 @@ export function observeFilesFromDatabase() { // Update the store if (newFiles.length > 0 || deletedFiles.length > 0) { fileObservers.update($files => { - if (newFiles.length > 0 && get(currentTool) !== Tool.SCISSORS) { // Reset the target map bounds when new files are added - initTargetMapBounds(newFiles.length); - } newFiles.forEach(id => { $files.set(id, dexieGPXFileStore(id)); }); diff --git a/website/src/lib/stores.ts b/website/src/lib/stores.ts index eb0f7235..c2adc535 100644 --- a/website/src/lib/stores.ts +++ b/website/src/lib/stores.ts @@ -195,6 +195,8 @@ export async function loadFiles(list: FileList | File[]) { } } + initTargetMapBounds(list.length); + dbUtils.addMultiple(files); selectFileWhenLoaded(files[0]._data.id);