UNPKG

@kirz/react-native-toolkit

Version:

Toolkit to speed up React Native development

65 lines (64 loc) 2.42 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = exports.CSyncStorage = void 0; var _asyncStorage = _interopRequireDefault(require("@react-native-async-storage/async-storage")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 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); } const wrapPromise = (promise, onEnd) => { if (!onEnd) { return; } promise.then(() => onEnd()).catch(err => onEnd(err.message)); }; class CSyncStorage { constructor() { _defineProperty(this, "keys", []); _defineProperty(this, "data", {}); } async init() { this.keys = await _asyncStorage.default.getAllKeys(); const stored = await _asyncStorage.default.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.default.setItem(key, JSON.stringify(value)), onEnd); } removeItem(key, onEnd) { delete this.data[key]; wrapPromise(_asyncStorage.default.removeItem(key), onEnd); } getAllKeys() { return this.keys; } clear(onEnd) { this.data = {}; wrapPromise(_asyncStorage.default.clear(), onEnd); } } exports.CSyncStorage = CSyncStorage; const SyncStorage = new CSyncStorage(); var _default = SyncStorage; exports.default = _default; //# sourceMappingURL=SyncStorage.js.map