Skip to content

Commit 5379c91

Browse files
committed
Review fixes
1 parent 36c73ce commit 5379c91

File tree

2 files changed

+15
-20
lines changed

2 files changed

+15
-20
lines changed

ui/src/components/Modal/Modal.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ export function Modal({ open, onClose, children, className }: ModalProps) {
8080
firstInput.focus();
8181
} else {
8282
const firstFocusable = contentRef.current?.querySelector<HTMLElement>(
83-
'button, input, select, textarea, [tabindex]:not([tabindex="-1"])'
83+
'button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])'
8484
);
8585
if (firstFocusable) {
8686
firstFocusable.focus();

ui/src/pages/AccountPage.tsx

Lines changed: 14 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -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 */
3648
function 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

Comments
 (0)