LocalDatastoreController.react-native.js 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. exports.default = void 0;
  6. var _LocalDatastoreUtils = require("./LocalDatastoreUtils");
  7. var _StorageController = _interopRequireDefault(require("./StorageController.react-native"));
  8. function _interopRequireDefault(e) {
  9. return e && e.__esModule ? e : {
  10. default: e
  11. };
  12. }
  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 = JSON.stringify(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. results.forEach(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. const keys = await _StorageController.default.getAllKeysAsync();
  64. const storage = {};
  65. const results = await _StorageController.default.multiGet(keys);
  66. results.map(pair => {
  67. const [key, value] = pair;
  68. storage[key] = value;
  69. });
  70. return storage;
  71. },
  72. async clear() {
  73. const keys = await _StorageController.default.getAllKeysAsync();
  74. const batch = [];
  75. for (let i = 0; i < keys.length; i += 1) {
  76. const key = keys[i];
  77. if ((0, _LocalDatastoreUtils.isLocalDatastoreKey)(key)) {
  78. batch.push(key);
  79. }
  80. }
  81. await _StorageController.default.multiRemove(batch).catch(error => console.error('Error clearing local datastore: ', error));
  82. }
  83. };
  84. module.exports = LocalDatastoreController;
  85. var _default = exports.default = LocalDatastoreController;