mirror of
https://github.com/Azgaar/Fantasy-Map-Generator.git
synced 2025-12-19 02:21:24 +01:00
refactor: define globals
This commit is contained in:
parent
22903fcb71
commit
7c2c624417
26 changed files with 939 additions and 245 deletions
49
src/scripts/indexedDB.ts
Normal file
49
src/scripts/indexedDB.ts
Normal file
|
|
@ -0,0 +1,49 @@
|
|||
// @ts-ignore unimplemented historical interfaces
|
||||
const indexedDBfactory = window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB;
|
||||
if (!indexedDBfactory) console.error("indexedDB not supported");
|
||||
|
||||
let database: IDBDatabase | null = null;
|
||||
const databaseRequest = indexedDBfactory.open("d2", 1);
|
||||
|
||||
databaseRequest.onsuccess = function () {
|
||||
database = this.result;
|
||||
};
|
||||
|
||||
databaseRequest.onerror = e => {
|
||||
console.error("indexedDB request error", e);
|
||||
};
|
||||
|
||||
databaseRequest.onupgradeneeded = () => {
|
||||
database = null;
|
||||
const store = databaseRequest.result.createObjectStore("s", {keyPath: "k"});
|
||||
store.transaction.oncomplete = event => {
|
||||
database = (event.target as IDBTransaction)?.db;
|
||||
};
|
||||
};
|
||||
|
||||
function getValue(key: string, callback: (value: unknown) => void) {
|
||||
if (!database) {
|
||||
setTimeout(() => getValue(key, callback), 100);
|
||||
return;
|
||||
}
|
||||
|
||||
database.transaction("s").objectStore("s").get(key).onsuccess = event => {
|
||||
const target = event.target as IDBRequest<IDBDatabase>;
|
||||
const value = target.result || null;
|
||||
callback(value);
|
||||
};
|
||||
}
|
||||
|
||||
function setValue(key: string, value: unknown) {
|
||||
if (!database) {
|
||||
setTimeout(() => setValue(key, value), 100);
|
||||
return;
|
||||
}
|
||||
|
||||
database
|
||||
.transaction("s", "readwrite")
|
||||
.objectStore("s")
|
||||
.put({[key]: value});
|
||||
}
|
||||
|
||||
export const ldb = {get: getValue, set: setValue};
|
||||
Loading…
Add table
Add a link
Reference in a new issue