ParseConfig.js 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. exports.default = void 0;
  6. var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
  7. var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
  8. var _CoreManager = _interopRequireDefault(require("./CoreManager"));
  9. var _decode = _interopRequireDefault(require("./decode"));
  10. var _encode = _interopRequireDefault(require("./encode"));
  11. var _escape2 = _interopRequireDefault(require("./escape"));
  12. var _ParseError = _interopRequireDefault(require("./ParseError"));
  13. var _Storage = _interopRequireDefault(require("./Storage"));
  14. var ParseConfig = function () {
  15. function ParseConfig() {
  16. (0, _classCallCheck2.default)(this, ParseConfig);
  17. this.attributes = {};
  18. this._escapedAttributes = {};
  19. }
  20. (0, _createClass2.default)(ParseConfig, [{
  21. key: "get",
  22. value: function (attr) {
  23. return this.attributes[attr];
  24. }
  25. }, {
  26. key: "escape",
  27. value: function (attr) {
  28. var html = this._escapedAttributes[attr];
  29. if (html) {
  30. return html;
  31. }
  32. var val = this.attributes[attr];
  33. var escaped = '';
  34. if (val != null) {
  35. escaped = (0, _escape2.default)(val.toString());
  36. }
  37. this._escapedAttributes[attr] = escaped;
  38. return escaped;
  39. }
  40. }], [{
  41. key: "current",
  42. value: function () {
  43. var controller = _CoreManager.default.getConfigController();
  44. return controller.current();
  45. }
  46. }, {
  47. key: "get",
  48. value: function () {
  49. var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
  50. var controller = _CoreManager.default.getConfigController();
  51. return controller.get(options);
  52. }
  53. }, {
  54. key: "save",
  55. value: function (attrs, masterKeyOnlyFlags) {
  56. var controller = _CoreManager.default.getConfigController();
  57. return controller.save(attrs, masterKeyOnlyFlags).then(function () {
  58. return controller.get({
  59. useMasterKey: true
  60. });
  61. }, function (error) {
  62. return Promise.reject(error);
  63. });
  64. }
  65. }, {
  66. key: "_clearCache",
  67. value: function () {
  68. currentConfig = null;
  69. }
  70. }]);
  71. return ParseConfig;
  72. }();
  73. var currentConfig = null;
  74. var CURRENT_CONFIG_KEY = 'currentConfig';
  75. function decodePayload(data) {
  76. try {
  77. var json = JSON.parse(data);
  78. if (json && typeof json === 'object') {
  79. return (0, _decode.default)(json);
  80. }
  81. } catch (e) {
  82. return null;
  83. }
  84. }
  85. var DefaultController = {
  86. current: function () {
  87. if (currentConfig) {
  88. return currentConfig;
  89. }
  90. var config = new ParseConfig();
  91. var storagePath = _Storage.default.generatePath(CURRENT_CONFIG_KEY);
  92. if (!_Storage.default.async()) {
  93. var configData = _Storage.default.getItem(storagePath);
  94. if (configData) {
  95. var attributes = decodePayload(configData);
  96. if (attributes) {
  97. config.attributes = attributes;
  98. currentConfig = config;
  99. }
  100. }
  101. return config;
  102. }
  103. return _Storage.default.getItemAsync(storagePath).then(function (configData) {
  104. if (configData) {
  105. var _attributes = decodePayload(configData);
  106. if (_attributes) {
  107. config.attributes = _attributes;
  108. currentConfig = config;
  109. }
  110. }
  111. return config;
  112. });
  113. },
  114. get: function () {
  115. var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
  116. var RESTController = _CoreManager.default.getRESTController();
  117. return RESTController.request('GET', 'config', {}, options).then(function (response) {
  118. if (!response || !response.params) {
  119. var error = new _ParseError.default(_ParseError.default.INVALID_JSON, 'Config JSON response invalid.');
  120. return Promise.reject(error);
  121. }
  122. var config = new ParseConfig();
  123. config.attributes = {};
  124. for (var attr in response.params) {
  125. config.attributes[attr] = (0, _decode.default)(response.params[attr]);
  126. }
  127. currentConfig = config;
  128. return _Storage.default.setItemAsync(_Storage.default.generatePath(CURRENT_CONFIG_KEY), JSON.stringify(response.params)).then(function () {
  129. return config;
  130. });
  131. });
  132. },
  133. save: function (attrs, masterKeyOnlyFlags) {
  134. var RESTController = _CoreManager.default.getRESTController();
  135. var encodedAttrs = {};
  136. for (var _key in attrs) {
  137. encodedAttrs[_key] = (0, _encode.default)(attrs[_key]);
  138. }
  139. return RESTController.request('PUT', 'config', {
  140. params: encodedAttrs,
  141. masterKeyOnly: masterKeyOnlyFlags
  142. }, {
  143. useMasterKey: true
  144. }).then(function (response) {
  145. if (response && response.result) {
  146. return Promise.resolve();
  147. } else {
  148. var error = new _ParseError.default(_ParseError.default.INTERNAL_SERVER_ERROR, 'Error occured updating Config.');
  149. return Promise.reject(error);
  150. }
  151. });
  152. }
  153. };
  154. _CoreManager.default.setConfigController(DefaultController);
  155. var _default = ParseConfig;
  156. exports.default = _default;