misskey/src/client/scripts/idb-proxy.ts

24 lines
722 B
TypeScript

// FirefoxのプライベートモードなどではindexedDBが使用不可能なので、使う
import {
get as iget,
set as iset,
del as idel
} from 'idb-keyval';
const fallbackName = (key: string) => `idbfallback::${key}`;
export async function get(key: string) {
if (window.indexedDB) return iget(key);
return JSON.parse(localStorage.getItem(fallbackName(key)) || 'null');
}
export async function set(key: string, val: any) {
if (window.indexedDB) return iset(key, val);
return localStorage.setItem(fallbackName(key), JSON.stringify(val));
}
export async function del(key: string) {
if (window.indexedDB) return idel(key);
return localStorage.removeItem(fallbackName(key));
}