@kirz/react-native-toolkit
Version:
Toolkit to speed up React Native development
56 lines • 2.06 kB
JavaScript
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