LocalDatastoreController.react-native.js 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. "use strict";
  2. var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
  3. var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
  4. _Object$defineProperty(exports, "__esModule", {
  5. value: true
  6. });
  7. exports.default = void 0;
  8. var _stringify = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/json/stringify"));
  9. var _forEach = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/for-each"));
  10. var _map = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/map"));
  11. var _LocalDatastoreUtils = require("./LocalDatastoreUtils");
  12. var _StorageController = _interopRequireDefault(require("./StorageController.react-native"));
  13. const LocalDatastoreController = {
  14. async fromPinWithName(name) {
  15. const values = await _StorageController.default.getItemAsync(name);
  16. if (!values) {
  17. return [];
  18. }
  19. const objects = JSON.parse(values);
  20. return objects;
  21. },
  22. async pinWithName(name, value) {
  23. try {
  24. const values = (0, _stringify.default)(value);
  25. await _StorageController.default.setItemAsync(name, values);
  26. } catch (e) {
  27. // Quota exceeded, possibly due to Safari Private Browsing mode
  28. console.error(e.message);
  29. }
  30. },
  31. unPinWithName(name) {
  32. return _StorageController.default.removeItemAsync(name);
  33. },
  34. async getAllContents() {
  35. const keys = await _StorageController.default.getAllKeysAsync();
  36. const batch = [];
  37. for (let i = 0; i < keys.length; i += 1) {
  38. const key = keys[i];
  39. if ((0, _LocalDatastoreUtils.isLocalDatastoreKey)(key)) {
  40. batch.push(key);
  41. }
  42. }
  43. const LDS = {};
  44. let results = [];
  45. try {
  46. results = await _StorageController.default.multiGet(batch);
  47. } catch (error) {
  48. console.error('Error getAllContents: ', error);
  49. return {};
  50. }
  51. (0, _forEach.default)(results).call(results, pair => {
  52. const [key, value] = pair;
  53. try {
  54. LDS[key] = JSON.parse(value);
  55. } catch (error) {
  56. LDS[key] = null;
  57. }
  58. });
  59. return LDS;
  60. },
  61. // Used for testing
  62. async getRawStorage() {
  63. var _context;
  64. const keys = await _StorageController.default.getAllKeysAsync();
  65. const storage = {};
  66. const results = await _StorageController.default.multiGet(keys);
  67. (0, _map.default)(_context = results).call(_context, pair => {
  68. const [key, value] = pair;
  69. storage[key] = value;
  70. });
  71. return storage;
  72. },
  73. async clear() {
  74. const keys = await _StorageController.default.getAllKeysAsync();
  75. const batch = [];
  76. for (let i = 0; i < keys.length; i += 1) {
  77. const key = keys[i];
  78. if ((0, _LocalDatastoreUtils.isLocalDatastoreKey)(key)) {
  79. batch.push(key);
  80. }
  81. }
  82. await _StorageController.default.multiRemove(batch).catch(error => console.error('Error clearing local datastore: ', error));
  83. }
  84. };
  85. module.exports = LocalDatastoreController;
  86. var _default = exports.default = LocalDatastoreController;