fix: indexedDB saving map

This commit is contained in:
Azgaar 2023-08-08 16:45:39 +04:00
parent 1d921c18af
commit 1847270482
3 changed files with 25 additions and 31 deletions

View file

@ -7921,7 +7921,7 @@
<script src="libs/d3.min.js"></script> <script src="libs/d3.min.js"></script>
<script src="libs/priority-queue.min.js"></script> <script src="libs/priority-queue.min.js"></script>
<script src="libs/delaunator.min.js"></script> <script src="libs/delaunator.min.js"></script>
<script src="libs/indexedDB.js?v=1.89.32"></script> <script src="libs/indexedDB.js?v=1.91.01"></script>
<script src="utils/shorthands.js"></script> <script src="utils/shorthands.js"></script>
<script src="utils/commonUtils.js?v=1.89.29"></script> <script src="utils/commonUtils.js?v=1.89.29"></script>

View file

@ -2,14 +2,13 @@ let db;
const DATABASE_NAME = "d2"; const DATABASE_NAME = "d2";
const STORE_NAME = "s"; const STORE_NAME = "s";
const KEY_PATH = "key";
const openDatabase = () => { const openDatabase = () => {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
if (db) { if (db) resolve();
resolve();
} else { if (!window.indexedDB) return reject("IndexedDB is not supported");
const request = window.indexedDB.open(DATABASE_NAME, 1); const request = window.indexedDB.open(DATABASE_NAME);
request.onsuccess = event => { request.onsuccess = event => {
db = event.target.result; db = event.target.result;
@ -17,29 +16,26 @@ const openDatabase = () => {
}; };
request.onerror = event => { request.onerror = event => {
console.error("indexedDB request error"); console.error("IndexedDB request error");
reject(); reject();
}; };
request.onupgradeneeded = event => { request.onupgradeneeded = event => {
db = event.target.result; db = event.target.result;
const objectStore = db.createObjectStore(STORE_NAME, {keyPath: KEY_PATH}); const objectStore = db.createObjectStore(STORE_NAME, {keyPath: "key"});
objectStore.transaction.oncomplete = () => { objectStore.transaction.oncomplete = () => {
db = event.target.result; db = event.target.result;
}; };
}; };
}
}); });
}; };
const ldb = { const ldb = {
get: key => { get: key => {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
if (!window.indexedDB) return reject("indexedDB not supported");
openDatabase().then(() => { openDatabase().then(() => {
const hasStore = Array.from(db.objectStoreNames).includes(STORE_NAME); 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 transaction = db.transaction(STORE_NAME, "readonly");
const objectStore = transaction.objectStore(STORE_NAME); const objectStore = transaction.objectStore(STORE_NAME);
@ -53,14 +49,12 @@ const ldb = {
}); });
}, },
set: (key, value) => { set: (keyName, value) => {
return new Promise((resolve, reject) => { return new Promise(resolve => {
if (!window.indexedDB) return reject("indexedDB not supported");
openDatabase().then(() => { openDatabase().then(() => {
const transaction = db.transaction(STORE_NAME, "readwrite"); const transaction = db.transaction(STORE_NAME, "readwrite");
const objectStore = transaction.objectStore(STORE_NAME); const objectStore = transaction.objectStore([STORE_NAME]);
const putRequest = objectStore.put({key, value}); const putRequest = objectStore.put({key: keyName, value});
putRequest.onsuccess = () => { putRequest.onsuccess = () => {
resolve(); resolve();

View file

@ -1,7 +1,7 @@
"use strict"; "use strict";
// version and caching control // 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; document.title += " v" + version;