diff --git a/index.html b/index.html
index 56154669..c1f4c5d3 100644
--- a/index.html
+++ b/index.html
@@ -7841,7 +7841,7 @@
-
+
@@ -7882,7 +7882,7 @@
-
+
diff --git a/libs/indexedDB.js b/libs/indexedDB.js
index 739e581d..100b7be4 100644
--- a/libs/indexedDB.js
+++ b/libs/indexedDB.js
@@ -1,50 +1,72 @@
-function getValue(key) {
- return new Promise(function (resolve) {
+let db;
+
+const DATABASE_NAME = "d2";
+const STORE_NAME = "s";
+const KEY_PATH = "key";
+
+const openDatabase = () => {
+ return new Promise((resolve, reject) => {
if (db) {
- var transaction = db.transaction("store", "readonly");
- var objectStore = transaction.objectStore("store");
- var getRequest = objectStore.get(key);
- getRequest.onsuccess = function (event) {
- var result = event.target.result ? event.target.result.value : null;
- resolve(result);
- };
+ resolve();
} else {
- setTimeout(function () {
- getValue(key).then(resolve);
- }, 100);
+ const request = window.indexedDB.open(DATABASE_NAME, 1);
+
+ request.onsuccess = event => {
+ db = event.target.result;
+ resolve();
+ };
+
+ request.onerror = event => {
+ console.error("indexedDB request error");
+ console.log(event);
+ reject();
+ };
+
+ request.onupgradeneeded = event => {
+ db = event.target.result;
+ const objectStore = db.createObjectStore(STORE_NAME, {keyPath: KEY_PATH});
+ objectStore.transaction.oncomplete = () => {
+ db = event.target.result;
+ };
+ };
}
});
-}
-
-var indexedDB = window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB;
-if (!indexedDB) console.error("indexedDB not supported");
-
-var db;
-var request = indexedDB.open("myDatabase", 1);
-
-request.onsuccess = function (event) {
- db = event.target.result;
};
-request.onerror = function (event) {
- console.error("indexedDB request error");
- console.log(event);
-};
+const ldb = {
+ get: key => {
+ return new Promise((resolve, reject) => {
+ if (!window.indexedDB) return reject("indexedDB not supported");
-request.onupgradeneeded = function (event) {
- db = null;
- var dbRequest = event.target.result;
- var objectStore = dbRequest.createObjectStore("store", {keyPath: "key"});
- objectStore.transaction.oncomplete = function () {
- db = dbRequest;
- };
-};
+ openDatabase().then(() => {
+ const hasStore = Array.from(db.objectStoreNames).includes(STORE_NAME);
+ if (!hasStore) return reject("no store found");
-window.ldb = {
- get: getValue,
- set: function (key, value) {
- var transaction = db.transaction("store", "readwrite");
- var objectStore = transaction.objectStore("store");
- objectStore.put({key: key, value: value});
+ const transaction = db.transaction(STORE_NAME, "readonly");
+ const objectStore = transaction.objectStore(STORE_NAME);
+ const getRequest = objectStore.get(key);
+
+ getRequest.onsuccess = event => {
+ const result = event.target.result?.value || null;
+ resolve(result);
+ };
+ });
+ });
+ },
+
+ set: (key, value) => {
+ return new Promise((resolve, reject) => {
+ if (!window.indexedDB) return reject("indexedDB not supported");
+
+ openDatabase().then(() => {
+ const transaction = db.transaction(STORE_NAME, "readwrite");
+ const objectStore = transaction.objectStore(STORE_NAME);
+ const putRequest = objectStore.put({key, value});
+
+ putRequest.onsuccess = () => {
+ resolve();
+ };
+ });
+ });
}
};
diff --git a/main.js b/main.js
index 9c49703d..e6f95d45 100644
--- a/main.js
+++ b/main.js
@@ -281,20 +281,19 @@ async function checkLoadParameters() {
}
// check if there is a map saved to indexedDB
- const blob = await ldb.get("lastMap");
- if (blob) {
- try {
+ try {
+ const blob = await ldb.get("lastMap");
+ if (blob) {
WARN && console.warn("Loading last stored map");
uploadMap(blob);
- } catch (error) {
- ERROR && console.error(error);
- WARN && console.warn("Cannot load stored map, random map to be generated");
- generateMapOnLoad();
+ return;
}
- } else {
- WARN && console.warn("Generate random map");
- generateMapOnLoad();
+ } catch (error) {
+ console.error(error);
}
+
+ WARN && console.warn("Generate random map");
+ generateMapOnLoad();
}
async function generateMapOnLoad() {
diff --git a/versioning.js b/versioning.js
index 8a3e0e3c..96707b45 100644
--- a/versioning.js
+++ b/versioning.js
@@ -1,7 +1,7 @@
"use strict";
// version and caching control
-const version = "1.89.31"; // generator version, update each time
+const version = "1.89.32"; // generator version, update each time
{
document.title += " v" + version;