Update apx.
This commit is contained in:
110
wco/apx/apx.js
110
wco/apx/apx.js
@@ -511,3 +511,113 @@ apx.update = async () => {
|
||||
apx.save(); //store in local the modification
|
||||
};
|
||||
apx.ready(apx.update); //2nd param optional=> true mean does not wait same if apx.lock is set
|
||||
|
||||
apx.indexedDB = apx.indexedDB || {};
|
||||
|
||||
apx.indexedDB.set = async (db, storeName, keyPath, key, value) => {
|
||||
return new Promise((resolve, reject) => {
|
||||
const request = indexedDB.open(db, 1);
|
||||
|
||||
request.onupgradeneeded = (event) => {
|
||||
const db = event.target.result;
|
||||
|
||||
if (window.threadsObj) {
|
||||
for (const threadId of Object.keys(window.threadsObj)) {
|
||||
if (!db.objectStoreNames.contains(threadId)) {
|
||||
db.createObjectStore(threadId, { keyPath: keyPath });
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
request.onsuccess = (event) => {
|
||||
const db = event.target.result;
|
||||
|
||||
if (!db.objectStoreNames.contains(storeName)) {
|
||||
return resolve();
|
||||
};
|
||||
|
||||
const transaction = db.transaction(storeName, "readwrite");
|
||||
const store = transaction.objectStore(storeName);
|
||||
|
||||
const putRequest = store.put({ timestamp: key, value: value });
|
||||
putRequest.onsuccess = () => resolve();
|
||||
putRequest.onerror = (error) => reject(error);
|
||||
};
|
||||
|
||||
request.onerror = (error) => reject(error);
|
||||
});
|
||||
};
|
||||
|
||||
apx.indexedDB.get = async (db, storeName, keyPath, key) => {
|
||||
return new Promise((resolve, reject) => {
|
||||
const request = indexedDB.open(db, 1);
|
||||
|
||||
request.onupgradeneeded = (event) => {
|
||||
const db = event.target.result;
|
||||
|
||||
if (window.threadsObj) {
|
||||
for (const threadId of Object.keys(window.threadsObj)) {
|
||||
if (!db.objectStoreNames.contains(threadId)) {
|
||||
db.createObjectStore(threadId, { keyPath: keyPath });
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
request.onsuccess = (event) => {
|
||||
const db = event.target.result;
|
||||
|
||||
if (!db.objectStoreNames.contains(storeName)) {
|
||||
return resolve(null);
|
||||
};
|
||||
|
||||
const transaction = db.transaction(storeName, "readonly");
|
||||
const store = transaction.objectStore(storeName);
|
||||
const getRequest = store.get(key);
|
||||
|
||||
getRequest.onsuccess = () => {
|
||||
resolve(getRequest.result ? getRequest.result.value : null);
|
||||
};
|
||||
|
||||
getRequest.onerror = () => resolve(null);
|
||||
};
|
||||
|
||||
request.onerror = (error) => reject(error);
|
||||
});
|
||||
};
|
||||
|
||||
apx.indexedDB.del = async (db, storeName, keyPath, key) => {
|
||||
return new Promise((resolve, reject) => {
|
||||
const request = indexedDB.open(db, 1);
|
||||
|
||||
request.onupgradeneeded = (event) => {
|
||||
const db = event.target.result;
|
||||
|
||||
if (window.threadsObj) {
|
||||
for (const threadId of Object.keys(window.threadsObj)) {
|
||||
if (!db.objectStoreNames.contains(threadId)) {
|
||||
db.createObjectStore(threadId, { keyPath: keyPath });
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
request.onsuccess = (event) => {
|
||||
const db = event.target.result;
|
||||
|
||||
if (!db.objectStoreNames.contains(storeName)) {
|
||||
return resolve();
|
||||
};
|
||||
|
||||
const transaction = db.transaction(storeName, "readwrite");
|
||||
const store = transaction.objectStore(storeName);
|
||||
|
||||
const deleteRequest = store.delete(key);
|
||||
deleteRequest.onsuccess = () => resolve();
|
||||
deleteRequest.onerror = (error) => reject(error);
|
||||
};
|
||||
|
||||
request.onerror = (error) => reject(error);
|
||||
});
|
||||
};
|
Reference in New Issue
Block a user