File size: 956 Bytes
39371ea
 
 
 
 
 
 
e7c75bb
39371ea
e7c75bb
39371ea
 
 
e7c75bb
39371ea
e7c75bb
39371ea
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
export async function openStorage() {
  const db = await new Promise((resolve, reject) => {
    const request = indexedDB.open('minicpm5-pi-workspace', 1);
    request.onupgradeneeded = () => request.result.createObjectStore('state');
    request.onsuccess = () => resolve(request.result); request.onerror = () => reject(request.error);
  });
  return {
    async load(key = 'current') {
      return new Promise((resolve, reject) => {
        const request = db.transaction('state').objectStore('state').get(key);
        request.onsuccess = () => resolve(request.result); request.onerror = () => reject(request.error);
      });
    },
    async save(value, key = 'current') {
      return new Promise((resolve, reject) => {
        const tx = db.transaction('state', 'readwrite'); tx.objectStore('state').put(value, key);
        tx.oncomplete = resolve; tx.onerror = () => reject(tx.error); tx.onabort = () => reject(tx.error);
      });
    },
  };
}