UNPKG

@kirz/react-native-toolkit

Version:

Toolkit to speed up React Native development

56 lines 2.06 kB
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); } function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } import AsyncStorage from '@react-native-async-storage/async-storage'; const wrapPromise = (promise, onEnd) => { if (!onEnd) { return; } promise.then(() => onEnd()).catch(err => onEnd(err.message)); }; export class CSyncStorage { constructor() { _defineProperty(this, "keys", []); _defineProperty(this, "data", {}); } async init() { this.keys = await AsyncStorage.getAllKeys(); const stored = await AsyncStorage.multiGet(this.keys); stored.forEach(_ref => { let [key, item] = _ref; let value = item; if (item) { try { value = JSON.parse(item); } catch { // no-op } } this.data[key] = value; }); } getItem(key) { return this.data[key]; } multiGet(keys) { return keys.map(key => [key, this.data[key]]); } setItem(key, value, onEnd) { this.data[key] = value; wrapPromise(AsyncStorage.setItem(key, JSON.stringify(value)), onEnd); } removeItem(key, onEnd) { delete this.data[key]; wrapPromise(AsyncStorage.removeItem(key), onEnd); } getAllKeys() { return this.keys; } clear(onEnd) { this.data = {}; wrapPromise(AsyncStorage.clear(), onEnd); } } const SyncStorage = new CSyncStorage(); export default SyncStorage; //# sourceMappingURL=SyncStorage.js.map