ParseConfig.js 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  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. return (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. }();
  72. var currentConfig = null;
  73. var CURRENT_CONFIG_KEY = 'currentConfig';
  74. function decodePayload(data) {
  75. try {
  76. var json = JSON.parse(data);
  77. if (json && typeof json === 'object') {
  78. return (0, _decode.default)(json);
  79. }
  80. } catch (e) {
  81. return null;
  82. }
  83. }
  84. var DefaultController = {
  85. current: function () {
  86. if (currentConfig) {
  87. return currentConfig;
  88. }
  89. var config = new ParseConfig();
  90. var storagePath = _Storage.default.generatePath(CURRENT_CONFIG_KEY);
  91. if (!_Storage.default.async()) {
  92. var configData = _Storage.default.getItem(storagePath);
  93. if (configData) {
  94. var attributes = decodePayload(configData);
  95. if (attributes) {
  96. config.attributes = attributes;
  97. currentConfig = config;
  98. }
  99. }
  100. return config;
  101. }
  102. return _Storage.default.getItemAsync(storagePath).then(function (configData) {
  103. if (configData) {
  104. var _attributes = decodePayload(configData);
  105. if (_attributes) {
  106. config.attributes = _attributes;
  107. currentConfig = config;
  108. }
  109. }
  110. return config;
  111. });
  112. },
  113. get: function () {
  114. var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
  115. var RESTController = _CoreManager.default.getRESTController();
  116. return RESTController.request('GET', 'config', {}, options).then(function (response) {
  117. if (!response || !response.params) {
  118. var error = new _ParseError.default(_ParseError.default.INVALID_JSON, 'Config JSON response invalid.');
  119. return Promise.reject(error);
  120. }
  121. var config = new ParseConfig();
  122. config.attributes = {};
  123. for (var attr in response.params) {
  124. config.attributes[attr] = (0, _decode.default)(response.params[attr]);
  125. }
  126. currentConfig = config;
  127. return _Storage.default.setItemAsync(_Storage.default.generatePath(CURRENT_CONFIG_KEY), JSON.stringify(response.params)).then(function () {
  128. return config;
  129. });
  130. });
  131. },
  132. save: function (attrs, masterKeyOnlyFlags) {
  133. var RESTController = _CoreManager.default.getRESTController();
  134. var encodedAttrs = {};
  135. for (var key in attrs) {
  136. encodedAttrs[key] = (0, _encode.default)(attrs[key]);
  137. }
  138. return RESTController.request('PUT', 'config', {
  139. params: encodedAttrs,
  140. masterKeyOnly: masterKeyOnlyFlags
  141. }, {
  142. useMasterKey: true
  143. }).then(function (response) {
  144. if (response && response.result) {
  145. return Promise.resolve();
  146. } else {
  147. var error = new _ParseError.default(_ParseError.default.INTERNAL_SERVER_ERROR, 'Error occured updating Config.');
  148. return Promise.reject(error);
  149. }
  150. });
  151. }
  152. };
  153. _CoreManager.default.setConfigController(DefaultController);
  154. var _default = exports.default = ParseConfig;