LocalDatastoreController.js 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. "use strict";
  2. var _LocalDatastoreUtils = require("./LocalDatastoreUtils");
  3. var _Storage = _interopRequireDefault(require("./Storage"));
  4. function _interopRequireDefault(obj) {
  5. return obj && obj.__esModule ? obj : {
  6. default: obj
  7. };
  8. }
  9. /**
  10. * @flow
  11. */
  12. const LocalDatastoreController = {
  13. async fromPinWithName(name /*: string*/) /*: Array<Object>*/{
  14. const values = await _Storage.default.getItemAsync(name);
  15. if (!values) {
  16. return [];
  17. }
  18. const objects = JSON.parse(values);
  19. return objects;
  20. },
  21. pinWithName(name /*: string*/, value /*: any*/) {
  22. const values = JSON.stringify(value);
  23. return _Storage.default.setItemAsync(name, values);
  24. },
  25. unPinWithName(name /*: string*/) {
  26. return _Storage.default.removeItemAsync(name);
  27. },
  28. async getAllContents() /*: Object*/{
  29. const keys = await _Storage.default.getAllKeysAsync();
  30. return keys.reduce(async (previousPromise, key) => {
  31. const LDS = await previousPromise;
  32. if ((0, _LocalDatastoreUtils.isLocalDatastoreKey)(key)) {
  33. const value = await _Storage.default.getItemAsync(key);
  34. try {
  35. LDS[key] = JSON.parse(value);
  36. } catch (error) {
  37. console.error('Error getAllContents: ', error);
  38. }
  39. }
  40. return LDS;
  41. }, Promise.resolve({}));
  42. },
  43. // Used for testing
  44. async getRawStorage() /*: Object*/{
  45. const keys = await _Storage.default.getAllKeysAsync();
  46. return keys.reduce(async (previousPromise, key) => {
  47. const LDS = await previousPromise;
  48. const value = await _Storage.default.getItemAsync(key);
  49. LDS[key] = value;
  50. return LDS;
  51. }, Promise.resolve({}));
  52. },
  53. async clear() /*: Promise*/{
  54. const keys = await _Storage.default.getAllKeysAsync();
  55. const toRemove = [];
  56. for (const key of keys) {
  57. if ((0, _LocalDatastoreUtils.isLocalDatastoreKey)(key)) {
  58. toRemove.push(key);
  59. }
  60. }
  61. const promises = toRemove.map(this.unPinWithName);
  62. return Promise.all(promises);
  63. }
  64. };
  65. module.exports = LocalDatastoreController;