@@ -32,6 +32,18 @@ function exportLocalStorageData(): Record<string, unknown> {
3232 return result ;
3333}
3434
35+ /** Clear WASM SQLite database and unregister the service worker */
36+ async function clearWasmData ( ) : Promise < void > {
37+ await new Promise < void > ( ( resolve ) => {
38+ const req = indexedDB . deleteDatabase ( "hadrian-wasm" ) ;
39+ req . onsuccess = ( ) => resolve ( ) ;
40+ req . onerror = ( ) => resolve ( ) ;
41+ req . onblocked = ( ) => resolve ( ) ;
42+ } ) ;
43+ const registrations = await navigator . serviceWorker ?. getRegistrations ( ) ;
44+ await Promise . all ( registrations ?. map ( ( r ) => r . unregister ( ) ) ?? [ ] ) ;
45+ }
46+
3547/** Clear all Hadrian-related localStorage data */
3648function clearLocalStorageData ( ) : void {
3749 for ( const key of LOCAL_STORAGE_KEYS ) {
@@ -130,17 +142,7 @@ export default function AccountPage() {
130142 try {
131143 // Clear IndexedDB (conversations)
132144 await deleteIndexedDBDatabase ( ) ;
133- // Clear the WASM SQLite database (providers, users, etc.)
134- await new Promise < void > ( ( resolve ) => {
135- const req = indexedDB . deleteDatabase ( "hadrian-wasm" ) ;
136- req . onsuccess = ( ) => resolve ( ) ;
137- req . onerror = ( ) => resolve ( ) ;
138- req . onblocked = ( ) => resolve ( ) ;
139- } ) ;
140- // Unregister the service worker so its in-memory WASM gateway is
141- // discarded. A fresh worker will be registered on the next page load.
142- const registrations = await navigator . serviceWorker ?. getRegistrations ( ) ;
143- await Promise . all ( registrations ?. map ( ( r ) => r . unregister ( ) ) ?? [ ] ) ;
145+ await clearWasmData ( ) ;
144146 // Clear localStorage
145147 clearLocalStorageData ( ) ;
146148
@@ -185,14 +187,7 @@ export default function AccountPage() {
185187 // Clear local data first (before logout clears auth state)
186188 try {
187189 await deleteIndexedDBDatabase ( ) ;
188- await new Promise < void > ( ( resolve ) => {
189- const req = indexedDB . deleteDatabase ( "hadrian-wasm" ) ;
190- req . onsuccess = ( ) => resolve ( ) ;
191- req . onerror = ( ) => resolve ( ) ;
192- req . onblocked = ( ) => resolve ( ) ;
193- } ) ;
194- const registrations = await navigator . serviceWorker ?. getRegistrations ( ) ;
195- await Promise . all ( registrations ?. map ( ( r ) => r . unregister ( ) ) ?? [ ] ) ;
190+ await clearWasmData ( ) ;
196191 clearLocalStorageData ( ) ;
197192 } catch {
198193 // Continue with server deletion even if local clear fails
0 commit comments