UNPKG

@slan-health/taro-vueuse

Version:

taro vue版本hooks

117 lines (116 loc) 2.85 kB
import { clearStorage, removeStorage, getStorageInfo, setStorage, getStorageSync, getStorage } from "@tarojs/taro"; const cache = /* @__PURE__ */ new Map(); function useStorage() { const getSync = (key) => { if (!cache.has(key)) { const data2 = getStorageSync(key); cache.set(key, data2); } const data = cache.get(key); return data; }; const getStorageSync$1 = (key) => { return new Promise((resolve, reject) => { try { getStorage({ key, success: ({ data }) => resolve(data), fail: () => reject(void 0) }); } catch (e) { reject(void 0); } }); }; const setStorageAsync = (key, data) => { return new Promise((resolve, reject) => { try { if (!key) { console.warn("please provide a option"); return reject(false); } else { setStorage({ key, data, success: () => { cache.set(key, data); resolve(true); }, fail: () => reject(false) }); } } catch (e) { reject(false); } }); }; const getStorageAsync = (key) => { return new Promise(async (resolve, reject) => { try { if (!key) { getStorageInfo({ success: async ({ keys }) => { if (!keys.length) { resolve(void 0); } else { const result = {}; for await (let currentKey of keys) { const data = await getStorageSync$1(currentKey); result[currentKey] = data; } resolve(result); } }, fail: () => reject(void 0) }); } else { if (!cache.has(key)) { const data2 = await getStorageSync$1(key); cache.set(key, data2); } const data = cache.get(key); resolve(data); } } catch (e) { reject(void 0); } }); }; const removeStorageAsync = (key) => { return new Promise((resolve, reject) => { const callbackOptions = { success: () => { if (cache.has(key)) { cache.delete(key); } resolve(true); }, fail: () => reject(false) }; try { if (!key) { clearStorage(); cache.clear(); resolve(true); } else { removeStorage({ key, ...callbackOptions }); } } catch (e) { reject(false); } }); }; return { getSync, set: setStorageAsync, get: getStorageAsync, remove: removeStorageAsync }; } export { useStorage as default }; //# sourceMappingURL=index.js.map