LocalDatastoreController.js 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  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. console.error('Error getAllContents: ', error);
  57. }
  58. }
  59. return LDS;
  60. }, Promise.resolve({}));
  61. },
  62. // Used for testing
  63. async getRawStorage()
  64. /*: Object*/
  65. {
  66. const keys = await _Storage.default.getAllKeysAsync();
  67. return keys.reduce(async (previousPromise, key) => {
  68. const LDS = await previousPromise;
  69. const value = await _Storage.default.getItemAsync(key);
  70. LDS[key] = value;
  71. return LDS;
  72. }, Promise.resolve({}));
  73. },
  74. async clear()
  75. /*: Promise*/
  76. {
  77. const keys = await _Storage.default.getAllKeysAsync();
  78. const toRemove = [];
  79. for (const key of keys) {
  80. if ((0, _LocalDatastoreUtils.isLocalDatastoreKey)(key)) {
  81. toRemove.push(key);
  82. }
  83. }
  84. const promises = toRemove.map(this.unPinWithName);
  85. return Promise.all(promises);
  86. }
  87. };
  88. module.exports = LocalDatastoreController;