LocalDatastoreController.js 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  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. * Copyright (c) 2015-present, Parse, LLC.
  11. * All rights reserved.
  12. *
  13. * This source code is licensed under the BSD-style license found in the
  14. * LICENSE file in the root directory of this source tree. An additional grant
  15. * of patent rights can be found in the PATENTS file in the same directory.
  16. *
  17. * @flow
  18. */
  19. const LocalDatastoreController = {
  20. async fromPinWithName(name
  21. /*: string*/
  22. )
  23. /*: Array<Object>*/
  24. {
  25. const values = await _Storage.default.getItemAsync(name);
  26. if (!values) {
  27. return [];
  28. }
  29. const objects = JSON.parse(values);
  30. return objects;
  31. },
  32. pinWithName(name
  33. /*: string*/
  34. , value
  35. /*: any*/
  36. ) {
  37. const values = JSON.stringify(value);
  38. return _Storage.default.setItemAsync(name, values);
  39. },
  40. unPinWithName(name
  41. /*: string*/
  42. ) {
  43. return _Storage.default.removeItemAsync(name);
  44. },
  45. async getAllContents()
  46. /*: Object*/
  47. {
  48. const keys = await _Storage.default.getAllKeysAsync();
  49. return keys.reduce(async (previousPromise, key) => {
  50. const LDS = await previousPromise;
  51. if ((0, _LocalDatastoreUtils.isLocalDatastoreKey)(key)) {
  52. const value = await _Storage.default.getItemAsync(key);
  53. try {
  54. LDS[key] = JSON.parse(value);
  55. } catch (error) {
  56. // eslint-disable-next-line no-console
  57. console.error('Error getAllContents: ', error);
  58. }
  59. }
  60. return LDS;
  61. }, Promise.resolve({}));
  62. },
  63. // Used for testing
  64. async getRawStorage()
  65. /*: Object*/
  66. {
  67. const keys = await _Storage.default.getAllKeysAsync();
  68. return keys.reduce(async (previousPromise, key) => {
  69. const LDS = await previousPromise;
  70. const value = await _Storage.default.getItemAsync(key);
  71. LDS[key] = value;
  72. return LDS;
  73. }, Promise.resolve({}));
  74. },
  75. async clear()
  76. /*: Promise*/
  77. {
  78. const keys = await _Storage.default.getAllKeysAsync();
  79. const toRemove = [];
  80. for (const key of keys) {
  81. if ((0, _LocalDatastoreUtils.isLocalDatastoreKey)(key)) {
  82. toRemove.push(key);
  83. }
  84. }
  85. const promises = toRemove.map(this.unPinWithName);
  86. return Promise.all(promises);
  87. }
  88. };
  89. module.exports = LocalDatastoreController;