123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179 |
- "use strict";
- var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
- var _stringify = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/json/stringify"));
- var _forEach = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/for-each"));
- var _map = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/map"));
- var _regenerator = _interopRequireDefault(require("@babel/runtime-corejs3/regenerator"));
- var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/slicedToArray"));
- var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/asyncToGenerator"));
- var _LocalDatastoreUtils = require("./LocalDatastoreUtils");
- /**
- * @flow
- * @private
- */
- var RNStorage = require('./StorageController.react-native');
- var LocalDatastoreController = {
- fromPinWithName: function (name /*: string*/) /*: Promise<Array<Object>>*/{
- return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
- var values, objects;
- return _regenerator.default.wrap(function (_context) {
- while (1) switch (_context.prev = _context.next) {
- case 0:
- _context.next = 2;
- return RNStorage.getItemAsync(name);
- case 2:
- values = _context.sent;
- if (values) {
- _context.next = 5;
- break;
- }
- return _context.abrupt("return", []);
- case 5:
- objects = JSON.parse(values);
- return _context.abrupt("return", objects);
- case 7:
- case "end":
- return _context.stop();
- }
- }, _callee);
- }))();
- },
- pinWithName: function (name /*: string*/, value /*: any*/) /*: Promise<void>*/{
- return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {
- var values;
- return _regenerator.default.wrap(function (_context2) {
- while (1) switch (_context2.prev = _context2.next) {
- case 0:
- _context2.prev = 0;
- values = (0, _stringify.default)(value);
- _context2.next = 4;
- return RNStorage.setItemAsync(name, values);
- case 4:
- _context2.next = 9;
- break;
- case 6:
- _context2.prev = 6;
- _context2.t0 = _context2["catch"](0);
- // Quota exceeded, possibly due to Safari Private Browsing mode
- console.error(_context2.t0.message);
- case 9:
- case "end":
- return _context2.stop();
- }
- }, _callee2, null, [[0, 6]]);
- }))();
- },
- unPinWithName: function (name /*: string*/) /*: Promise<void>*/{
- return RNStorage.removeItemAsync(name);
- },
- getAllContents: function () /*: Promise<Object>*/{
- return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3() {
- var keys, batch, i, key, LDS, results;
- return _regenerator.default.wrap(function (_context3) {
- while (1) switch (_context3.prev = _context3.next) {
- case 0:
- _context3.next = 2;
- return RNStorage.getAllKeysAsync();
- case 2:
- keys = _context3.sent;
- batch = [];
- for (i = 0; i < keys.length; i += 1) {
- key = keys[i];
- if ((0, _LocalDatastoreUtils.isLocalDatastoreKey)(key)) {
- batch.push(key);
- }
- }
- LDS = {};
- results = [];
- _context3.prev = 7;
- _context3.next = 10;
- return RNStorage.multiGet(batch);
- case 10:
- results = _context3.sent;
- _context3.next = 17;
- break;
- case 13:
- _context3.prev = 13;
- _context3.t0 = _context3["catch"](7);
- console.error('Error getAllContents: ', _context3.t0);
- return _context3.abrupt("return", {});
- case 17:
- (0, _forEach.default)(results).call(results, function (pair) {
- var _pair = (0, _slicedToArray2.default)(pair, 2),
- key = _pair[0],
- value = _pair[1];
- try {
- LDS[key] = JSON.parse(value);
- } catch (error) {
- LDS[key] = null;
- }
- });
- return _context3.abrupt("return", LDS);
- case 19:
- case "end":
- return _context3.stop();
- }
- }, _callee3, null, [[7, 13]]);
- }))();
- },
- // Used for testing
- getRawStorage: function () /*: Promise<Object>*/{
- return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4() {
- var keys, storage, results;
- return _regenerator.default.wrap(function (_context4) {
- while (1) switch (_context4.prev = _context4.next) {
- case 0:
- _context4.next = 2;
- return RNStorage.getAllKeysAsync();
- case 2:
- keys = _context4.sent;
- storage = {};
- _context4.next = 6;
- return RNStorage.multiGet(keys);
- case 6:
- results = _context4.sent;
- (0, _map.default)(results).call(results, function (pair) {
- var _pair2 = (0, _slicedToArray2.default)(pair, 2),
- key = _pair2[0],
- value = _pair2[1];
- storage[key] = value;
- });
- return _context4.abrupt("return", storage);
- case 9:
- case "end":
- return _context4.stop();
- }
- }, _callee4);
- }))();
- },
- clear: function () /*: Promise<void>*/{
- return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5() {
- var keys, batch, i, key;
- return _regenerator.default.wrap(function (_context5) {
- while (1) switch (_context5.prev = _context5.next) {
- case 0:
- _context5.next = 2;
- return RNStorage.getAllKeysAsync();
- case 2:
- keys = _context5.sent;
- batch = [];
- for (i = 0; i < keys.length; i += 1) {
- key = keys[i];
- if ((0, _LocalDatastoreUtils.isLocalDatastoreKey)(key)) {
- batch.push(key);
- }
- }
- return _context5.abrupt("return", RNStorage.multiRemove(batch).catch(function (error) {
- return console.error('Error clearing local datastore: ', error);
- }));
- case 6:
- case "end":
- return _context5.stop();
- }
- }, _callee5);
- }))();
- }
- };
- module.exports = LocalDatastoreController;
|