Update apx.

This commit is contained in:
devpotatoes
2025-07-16 12:36:04 +02:00
parent 4f1d02949b
commit bc76840707

View File

@@ -511,3 +511,113 @@ apx.update = async () => {
apx.save(); //store in local the modification 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.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);
});
};