mirror of
https://github.com/Azgaar/Fantasy-Map-Generator.git
synced 2025-12-17 09:41:24 +01:00
feat: autosave v1.89.29
This commit is contained in:
parent
69e630b886
commit
d75ac3c99d
7 changed files with 172 additions and 102 deletions
82
libs/indexedDB.js
Normal file
82
libs/indexedDB.js
Normal file
|
|
@ -0,0 +1,82 @@
|
|||
function waitForIndexedDB() {
|
||||
return new Promise(resolve => {
|
||||
const timer = setInterval(() => {
|
||||
if (window.indexedDB) {
|
||||
clearInterval(timer);
|
||||
resolve();
|
||||
}
|
||||
}, 100);
|
||||
});
|
||||
}
|
||||
|
||||
function getValue(key) {
|
||||
return new Promise((resolve, reject) => {
|
||||
if (!window.indexedDB) {
|
||||
reject(new Error("indexedDB not supported"));
|
||||
return;
|
||||
}
|
||||
|
||||
waitForIndexedDB().then(() => {
|
||||
const request = window.indexedDB.open("d2", 1);
|
||||
|
||||
request.onsuccess = event => {
|
||||
const db = event.target.result;
|
||||
const transaction = db.transaction("s", "readonly");
|
||||
const objectStore = transaction.objectStore("s");
|
||||
const getRequest = objectStore.get(key);
|
||||
|
||||
getRequest.onsuccess = event => {
|
||||
const value = (event.target.result && event.target.result.v) || null;
|
||||
resolve(value);
|
||||
};
|
||||
|
||||
getRequest.onerror = event => {
|
||||
reject(new Error("indexedDB request error"));
|
||||
console.log(event);
|
||||
};
|
||||
};
|
||||
|
||||
request.onerror = event => {
|
||||
reject(new Error("indexedDB request error"));
|
||||
console.log(event);
|
||||
};
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function setValue(key, value) {
|
||||
return new Promise((resolve, reject) => {
|
||||
if (!window.indexedDB) {
|
||||
reject(new Error("indexedDB not supported"));
|
||||
return;
|
||||
}
|
||||
|
||||
waitForIndexedDB().then(() => {
|
||||
const request = window.indexedDB.open("d2", 1);
|
||||
|
||||
request.onsuccess = event => {
|
||||
const db = event.target.result;
|
||||
const transaction = db.transaction("s", "readwrite");
|
||||
const objectStore = transaction.objectStore("s");
|
||||
|
||||
objectStore.put({k: key, v: value});
|
||||
|
||||
transaction.oncomplete = () => {
|
||||
resolve();
|
||||
};
|
||||
|
||||
transaction.onerror = event => {
|
||||
reject(new Error("indexedDB request error"));
|
||||
console.log(event);
|
||||
};
|
||||
};
|
||||
|
||||
request.onerror = event => {
|
||||
reject(new Error("indexedDB request error"));
|
||||
console.log(event);
|
||||
};
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
window.ldb = {get: getValue, set: setValue};
|
||||
Loading…
Add table
Add a link
Reference in a new issue