mirror of
https://github.com/Azgaar/Fantasy-Map-Generator.git
synced 2025-12-17 01:41:22 +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/priority-queue.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/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/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/ui/style.js"></script>
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
};
|
||||
});
|
||||
});
|
||||
}
|
||||
};
|
||||
|
|
|
|||
19
main.js
19
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() {
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue