From 590d27491030a7022ee814c7314f4a702678f907 Mon Sep 17 00:00:00 2001 From: Scott Idem Date: Wed, 16 Oct 2024 16:21:17 -0400 Subject: [PATCH] Better handling of the IDB refreshes and updates. --- src/lib/ae_stores.ts | 9 ++++--- src/lib/db_events.ts | 2 +- src/routes/+layout.svelte | 52 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 58 insertions(+), 5 deletions(-) diff --git a/src/lib/ae_stores.ts b/src/lib/ae_stores.ts index 4943d8f5..7f5c1144 100644 --- a/src/lib/ae_stores.ts +++ b/src/lib/ae_stores.ts @@ -48,12 +48,13 @@ export let ae_snip = string_snippets; // Set the version for the app data. Changing this should force a notification and ask the user to clear and reload the page. let ver = '2024-08-21_1736'; -let ver_idb = '2024-08-21_1735'; +let ver_idb = '2024-10-16_1540'; // *** BEGIN *** Longer-term app data. This should be stored to local storage. export let ae_app_local_data_struct: key_val = { - 'ver': '2024-08-16_1821', - 'ver_idb': '2024-08-16_1826', // Clear if date IndexedDB version + last_idb_reload: null, + ver: '2024-10-16_1540', + ver_idb: '2024-10-16_1540', // Clear if date IndexedDB version name: 'Aether - App Hub (SvelteKit 2.x Svelte 4.x)', theme: 'light', iframe: false, @@ -198,7 +199,7 @@ export let ae_loc: Writable = localStorageStore('ae_loc', ae_app_local_ // *** BEGIN *** Temporary app data. This should be stored to session storage. export let ae_app_session_data_struct: key_val = { - 'ver': '2024-02-27_13', + 'ver': '2024-10-16_1540', // ver_idb: ver_idb, log_lvl: 0, diff --git a/src/lib/db_events.ts b/src/lib/db_events.ts index e1ba6d7e..a3fb7584 100644 --- a/src/lib/db_events.ts +++ b/src/lib/db_events.ts @@ -641,7 +641,7 @@ export class MySubClassedDexie extends Dexie { constructor() { super('ae_events_db'); - this.version(3).stores({ + this.version(4).stores({ events: ` id, event_id, event_id_random, code, diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index 4bdd54f0..bb188f27 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -94,6 +94,58 @@ $slct = { } // console.log(`$slct = `, $slct); +// Check if the last reload timestamp for $ae_loc.last_idb_reload is no more than 15 minutes ago. +let default_idb_reload_time = 120 * 60 * 1000; // 120 minutes +if (!$ae_loc.last_idb_reload) { + console.log(`Last reload not found. Need to reset.`); + + // $ae_loc.last_idb_reload = Date.now(); + if (browser) { + $ae_loc.last_idb_reload = Date.now(); + + // Clear Indexed DB as well + indexedDB.deleteDatabase('ae_archives_db'); + indexedDB.deleteDatabase('ae_core_db'); + indexedDB.deleteDatabase('ae_events_db'); + indexedDB.deleteDatabase('ae_notes_db'); + indexedDB.deleteDatabase('ae_posts_db'); + + // localStorage.removeItem('ae_loc'); + // localStorage.removeItem('events_loc'); + + // window.location.reload(); + } + +} else if ($ae_loc.last_idb_reload && (Date.now() - $ae_loc.last_idb_reload) > default_idb_reload_time) { + console.log(`Last reload too old:`, $ae_loc.last_idb_reload); + + if (browser) { + $ae_loc.last_idb_reload = Date.now(); + + // Clear Indexed DB as well + indexedDB.deleteDatabase('ae_archives_db'); + indexedDB.deleteDatabase('ae_core_db'); + indexedDB.deleteDatabase('ae_events_db'); + indexedDB.deleteDatabase('ae_notes_db'); + indexedDB.deleteDatabase('ae_posts_db'); + + // localStorage.removeItem('ae_loc'); + // localStorage.removeItem('events_loc'); + + // window.location.reload(); + } +} else if (browser) { + console.log(`Last reload is recent:`, $ae_loc.last_idb_reload); + // Clear Indexed DB as well + // indexedDB.deleteDatabase('ae_core_db'); + // indexedDB.deleteDatabase('ae_events_db'); + + // localStorage.removeItem('ae_loc'); + // localStorage.removeItem('events_loc'); + + // window.location.reload(); +} + // There should almost always be an event_id set. if ($ae_loc?.site_cfg_json.slct__event_id) { $events_slct.event_id = $ae_loc.site_cfg_json.slct__event_id;