LocalDatastoreController.browser.js 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. "use strict";
  2. var _LocalDatastoreUtils = require("./LocalDatastoreUtils");
  3. /**
  4. * Copyright (c) 2015-present, Parse, LLC.
  5. * All rights reserved.
  6. *
  7. * This source code is licensed under the BSD-style license found in the
  8. * LICENSE file in the root directory of this source tree. An additional grant
  9. * of patent rights can be found in the PATENTS file in the same directory.
  10. *
  11. * @flow
  12. */
  13. /* global localStorage */
  14. var LocalDatastoreController = {
  15. fromPinWithName: function (name
  16. /*: string*/
  17. )
  18. /*: Array<Object>*/
  19. {
  20. var values = localStorage.getItem(name);
  21. if (!values) {
  22. return [];
  23. }
  24. var objects = JSON.parse(values);
  25. return objects;
  26. },
  27. pinWithName: function (name
  28. /*: string*/
  29. , value
  30. /*: any*/
  31. ) {
  32. try {
  33. var values = JSON.stringify(value);
  34. localStorage.setItem(name, values);
  35. } catch (e) {
  36. // Quota exceeded, possibly due to Safari Private Browsing mode
  37. console.log(e.message);
  38. }
  39. },
  40. unPinWithName: function (name
  41. /*: string*/
  42. ) {
  43. localStorage.removeItem(name);
  44. },
  45. getAllContents: function ()
  46. /*: Object*/
  47. {
  48. var LDS = {};
  49. for (var i = 0; i < localStorage.length; i += 1) {
  50. var key = localStorage.key(i);
  51. if ((0, _LocalDatastoreUtils.isLocalDatastoreKey)(key)) {
  52. var value = localStorage.getItem(key);
  53. try {
  54. LDS[key] = JSON.parse(value);
  55. } catch (error) {
  56. console.error('Error getAllContents: ', error);
  57. }
  58. }
  59. }
  60. return LDS;
  61. },
  62. getRawStorage: function ()
  63. /*: Object*/
  64. {
  65. var storage = {};
  66. for (var i = 0; i < localStorage.length; i += 1) {
  67. var key = localStorage.key(i);
  68. var value = localStorage.getItem(key);
  69. storage[key] = value;
  70. }
  71. return storage;
  72. },
  73. clear: function ()
  74. /*: Promise*/
  75. {
  76. var toRemove = [];
  77. for (var i = 0; i < localStorage.length; i += 1) {
  78. var key = localStorage.key(i);
  79. if ((0, _LocalDatastoreUtils.isLocalDatastoreKey)(key)) {
  80. toRemove.push(key);
  81. }
  82. }
  83. var promises = toRemove.map(this.unPinWithName);
  84. return Promise.all(promises);
  85. }
  86. };
  87. module.exports = LocalDatastoreController;