@kirz/react-native-toolkit
Version:
Toolkit to speed up React Native development
65 lines (64 loc) • 2.42 kB
JavaScript
;
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