mirror of
https://github.com/PR0M3TH3AN/bitvid.git
synced 2026-10-28 08:22:24 +00:00
fix(storage): close IndexedDB connection after operations in directMessagesStore
Ensures `db.close()` is called in `js/directMessagesStore.js` methods (`loadDirectMessageSnapshot`, `saveDirectMessageSnapshot`, `clearDirectMessageSnapshot`) to prevent hanging `deleteDatabase` calls in tests (and potentially in app teardown). This resolves the timeout issue in `tests/nostr/dm-direct-message-flow.test.mjs`. Co-authored-by: PR0M3TH3AN <[email protected]>
This commit is contained in:
1 parent
8e6257881d
commit
5a9452380a
1 file changed
+39
-28
+39
-28
@@ -192,16 +192,19 @@ export async function loadDirectMessageSnapshot(pubkey) {
|
||||
try {
|
||||
const db = await openSettingsDb();
|
||||
if (db) {
|
||||
const stored = await new Promise((resolve, reject) => {
|
||||
const tx = db.transaction(STORE_NAME, "readonly");
|
||||
const store = tx.objectStore(STORE_NAME);
|
||||
const request = store.get(dbKey);
|
||||
request.onsuccess = () => resolve(request.result || []);
|
||||
request.onerror = () =>
|
||||
reject(request.error || new Error("Failed to load snapshot"));
|
||||
});
|
||||
|
||||
return normalizeSnapshotList(stored);
|
||||
try {
|
||||
const stored = await new Promise((resolve, reject) => {
|
||||
const tx = db.transaction(STORE_NAME, "readonly");
|
||||
const store = tx.objectStore(STORE_NAME);
|
||||
const request = store.get(dbKey);
|
||||
request.onsuccess = () => resolve(request.result || []);
|
||||
request.onerror = () =>
|
||||
reject(request.error || new Error("Failed to load snapshot"));
|
||||
});
|
||||
return normalizeSnapshotList(stored);
|
||||
} finally {
|
||||
db.close();
|
||||
}
|
||||
}
|
||||
} catch (error) {
|
||||
userLogger.warn(
|
||||
@@ -244,15 +247,19 @@ export async function saveDirectMessageSnapshot(pubkey, snapshot) {
|
||||
try {
|
||||
const db = await openSettingsDb();
|
||||
if (db) {
|
||||
await new Promise((resolve, reject) => {
|
||||
const tx = db.transaction(STORE_NAME, "readwrite");
|
||||
const store = tx.objectStore(STORE_NAME);
|
||||
const request = store.put(normalizedSnapshot, dbKey);
|
||||
request.onsuccess = () => resolve();
|
||||
request.onerror = () =>
|
||||
reject(request.error || new Error("Failed to write snapshot"));
|
||||
});
|
||||
return normalizedSnapshot;
|
||||
try {
|
||||
await new Promise((resolve, reject) => {
|
||||
const tx = db.transaction(STORE_NAME, "readwrite");
|
||||
const store = tx.objectStore(STORE_NAME);
|
||||
const request = store.put(normalizedSnapshot, dbKey);
|
||||
request.onsuccess = () => resolve();
|
||||
request.onerror = () =>
|
||||
reject(request.error || new Error("Failed to write snapshot"));
|
||||
});
|
||||
return normalizedSnapshot;
|
||||
} finally {
|
||||
db.close();
|
||||
}
|
||||
}
|
||||
} catch (error) {
|
||||
userLogger.warn(
|
||||
@@ -290,15 +297,19 @@ export async function clearDirectMessageSnapshot(pubkey) {
|
||||
try {
|
||||
const db = await openSettingsDb();
|
||||
if (db) {
|
||||
await new Promise((resolve, reject) => {
|
||||
const tx = db.transaction(STORE_NAME, "readwrite");
|
||||
const store = tx.objectStore(STORE_NAME);
|
||||
const request = store.delete(dbKey);
|
||||
request.onsuccess = () => resolve();
|
||||
request.onerror = () =>
|
||||
reject(request.error || new Error("Failed to clear snapshot"));
|
||||
});
|
||||
cleared = true;
|
||||
try {
|
||||
await new Promise((resolve, reject) => {
|
||||
const tx = db.transaction(STORE_NAME, "readwrite");
|
||||
const store = tx.objectStore(STORE_NAME);
|
||||
const request = store.delete(dbKey);
|
||||
request.onsuccess = () => resolve();
|
||||
request.onerror = () =>
|
||||
reject(request.error || new Error("Failed to clear snapshot"));
|
||||
});
|
||||
cleared = true;
|
||||
} finally {
|
||||
db.close();
|
||||
}
|
||||
}
|
||||
} catch (error) {
|
||||
userLogger.warn(
|
||||
|
||||
Reference in new issue
Block a user