mirror of
https://github.com/Azgaar/Fantasy-Map-Generator.git
synced 2025-12-17 09:41:24 +01:00
refactor: indexedDB
This commit is contained in:
parent
4a5d2c0378
commit
290b6b38eb
4 changed files with 74 additions and 53 deletions
|
|
@ -7841,7 +7841,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.31"></script>
|
<script src="libs/indexedDB.js?v=1.89.32"></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>
|
||||||
|
|
@ -7882,7 +7882,7 @@
|
||||||
|
|
||||||
<script src="modules/ui/general.js?v=1.87.03"></script>
|
<script src="modules/ui/general.js?v=1.87.03"></script>
|
||||||
<script src="modules/ui/options.js?v=1.89.19"></script>
|
<script src="modules/ui/options.js?v=1.89.19"></script>
|
||||||
<script src="main.js?v=1.89.29"></script>
|
<script src="main.js?v=1.89.32"></script>
|
||||||
|
|
||||||
<script defer src="modules/relief-icons.js"></script>
|
<script defer src="modules/relief-icons.js"></script>
|
||||||
<script defer src="modules/ui/style.js"></script>
|
<script defer src="modules/ui/style.js"></script>
|
||||||
|
|
|
||||||
|
|
@ -1,50 +1,72 @@
|
||||||
function getValue(key) {
|
let db;
|
||||||
return new Promise(function (resolve) {
|
|
||||||
|
const DATABASE_NAME = "d2";
|
||||||
|
const STORE_NAME = "s";
|
||||||
|
const KEY_PATH = "key";
|
||||||
|
|
||||||
|
const openDatabase = () => {
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
if (db) {
|
if (db) {
|
||||||
var transaction = db.transaction("store", "readonly");
|
resolve();
|
||||||
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);
|
|
||||||
};
|
|
||||||
} else {
|
} else {
|
||||||
setTimeout(function () {
|
const request = window.indexedDB.open(DATABASE_NAME, 1);
|
||||||
getValue(key).then(resolve);
|
|
||||||
}, 100);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
var indexedDB = window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB;
|
request.onsuccess = event => {
|
||||||
if (!indexedDB) console.error("indexedDB not supported");
|
|
||||||
|
|
||||||
var db;
|
|
||||||
var request = indexedDB.open("myDatabase", 1);
|
|
||||||
|
|
||||||
request.onsuccess = function (event) {
|
|
||||||
db = event.target.result;
|
db = event.target.result;
|
||||||
|
resolve();
|
||||||
};
|
};
|
||||||
|
|
||||||
request.onerror = function (event) {
|
request.onerror = event => {
|
||||||
console.error("indexedDB request error");
|
console.error("indexedDB request error");
|
||||||
console.log(event);
|
console.log(event);
|
||||||
|
reject();
|
||||||
};
|
};
|
||||||
|
|
||||||
request.onupgradeneeded = function (event) {
|
request.onupgradeneeded = event => {
|
||||||
db = null;
|
db = event.target.result;
|
||||||
var dbRequest = event.target.result;
|
const objectStore = db.createObjectStore(STORE_NAME, {keyPath: KEY_PATH});
|
||||||
var objectStore = dbRequest.createObjectStore("store", {keyPath: "key"});
|
objectStore.transaction.oncomplete = () => {
|
||||||
objectStore.transaction.oncomplete = function () {
|
db = event.target.result;
|
||||||
db = dbRequest;
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
window.ldb = {
|
const ldb = {
|
||||||
get: getValue,
|
get: key => {
|
||||||
set: function (key, value) {
|
return new Promise((resolve, reject) => {
|
||||||
var transaction = db.transaction("store", "readwrite");
|
if (!window.indexedDB) return reject("indexedDB not supported");
|
||||||
var objectStore = transaction.objectStore("store");
|
|
||||||
objectStore.put({key: key, value: value});
|
openDatabase().then(() => {
|
||||||
|
const hasStore = Array.from(db.objectStoreNames).includes(STORE_NAME);
|
||||||
|
if (!hasStore) return reject("no store found");
|
||||||
|
|
||||||
|
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();
|
||||||
|
};
|
||||||
|
});
|
||||||
|
});
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
|
||||||
13
main.js
13
main.js
|
|
@ -281,21 +281,20 @@ async function checkLoadParameters() {
|
||||||
}
|
}
|
||||||
|
|
||||||
// check if there is a map saved to indexedDB
|
// check if there is a map saved to indexedDB
|
||||||
|
try {
|
||||||
const blob = await ldb.get("lastMap");
|
const blob = await ldb.get("lastMap");
|
||||||
if (blob) {
|
if (blob) {
|
||||||
try {
|
|
||||||
WARN && console.warn("Loading last stored map");
|
WARN && console.warn("Loading last stored map");
|
||||||
uploadMap(blob);
|
uploadMap(blob);
|
||||||
} catch (error) {
|
return;
|
||||||
ERROR && console.error(error);
|
|
||||||
WARN && console.warn("Cannot load stored map, random map to be generated");
|
|
||||||
generateMapOnLoad();
|
|
||||||
}
|
}
|
||||||
} else {
|
} catch (error) {
|
||||||
|
console.error(error);
|
||||||
|
}
|
||||||
|
|
||||||
WARN && console.warn("Generate random map");
|
WARN && console.warn("Generate random map");
|
||||||
generateMapOnLoad();
|
generateMapOnLoad();
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
async function generateMapOnLoad() {
|
async function generateMapOnLoad() {
|
||||||
await applyStyleOnLoad(); // apply previously selected default or custom style
|
await applyStyleOnLoad(); // apply previously selected default or custom style
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
// version and caching control
|
// 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;
|
document.title += " v" + version;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue