From 18472704823ed1cebe73f6ac8e145b99a745b8f5 Mon Sep 17 00:00:00 2001 From: Azgaar Date: Tue, 8 Aug 2023 16:45:39 +0400 Subject: [PATCH] fix: indexedDB saving map --- index.html | 2 +- libs/indexedDB.js | 52 +++++++++++++++++++++-------------------------- versioning.js | 2 +- 3 files changed, 25 insertions(+), 31 deletions(-) diff --git a/index.html b/index.html index d8d3caf8..052dfe04 100644 --- a/index.html +++ b/index.html @@ -7921,7 +7921,7 @@ - + diff --git a/libs/indexedDB.js b/libs/indexedDB.js index 9b2578e9..37e89c13 100644 --- a/libs/indexedDB.js +++ b/libs/indexedDB.js @@ -2,44 +2,40 @@ let db; const DATABASE_NAME = "d2"; const STORE_NAME = "s"; -const KEY_PATH = "key"; const openDatabase = () => { return new Promise((resolve, reject) => { - if (db) { + if (db) resolve(); + + if (!window.indexedDB) return reject("IndexedDB is not supported"); + const request = window.indexedDB.open(DATABASE_NAME); + + request.onsuccess = event => { + db = event.target.result; resolve(); - } else { - const request = window.indexedDB.open(DATABASE_NAME, 1); + }; - request.onsuccess = event => { + request.onerror = event => { + console.error("IndexedDB request error"); + reject(); + }; + + request.onupgradeneeded = event => { + db = event.target.result; + const objectStore = db.createObjectStore(STORE_NAME, {keyPath: "key"}); + objectStore.transaction.oncomplete = () => { db = event.target.result; - resolve(); }; - - request.onerror = event => { - console.error("indexedDB request error"); - reject(); - }; - - request.onupgradeneeded = event => { - db = event.target.result; - const objectStore = db.createObjectStore(STORE_NAME, {keyPath: KEY_PATH}); - objectStore.transaction.oncomplete = () => { - db = event.target.result; - }; - }; - } + }; }); }; const ldb = { get: key => { return new Promise((resolve, reject) => { - if (!window.indexedDB) return reject("indexedDB not supported"); - openDatabase().then(() => { const hasStore = Array.from(db.objectStoreNames).includes(STORE_NAME); - if (!hasStore) return reject("no store found"); + if (!hasStore) return reject("IndexedDB: no store found"); const transaction = db.transaction(STORE_NAME, "readonly"); const objectStore = transaction.objectStore(STORE_NAME); @@ -53,14 +49,12 @@ const ldb = { }); }, - set: (key, value) => { - return new Promise((resolve, reject) => { - if (!window.indexedDB) return reject("indexedDB not supported"); - + set: (keyName, value) => { + return new Promise(resolve => { openDatabase().then(() => { const transaction = db.transaction(STORE_NAME, "readwrite"); - const objectStore = transaction.objectStore(STORE_NAME); - const putRequest = objectStore.put({key, value}); + const objectStore = transaction.objectStore([STORE_NAME]); + const putRequest = objectStore.put({key: keyName, value}); putRequest.onsuccess = () => { resolve(); diff --git a/versioning.js b/versioning.js index ac42605d..0afe7e11 100644 --- a/versioning.js +++ b/versioning.js @@ -1,7 +1,7 @@ "use strict"; // version and caching control -const version = "1.91.00"; // generator version, update each time +const version = "1.91.01"; // generator version, update each time { document.title += " v" + version;