parse
Version:
Parse JavaScript SDK
152 lines • 4.97 kB
JavaScript
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
var _CoreManager = _interopRequireDefault(require("./CoreManager"));
var _decode = _interopRequireDefault(require("./decode"));
var _encode = _interopRequireDefault(require("./encode"));
var _escape2 = _interopRequireDefault(require("./escape"));
var _ParseError = _interopRequireDefault(require("./ParseError"));
var _Storage = _interopRequireDefault(require("./Storage"));
var ParseConfig = function () {
function ParseConfig() {
(0, _classCallCheck2.default)(this, ParseConfig);
this.attributes = {};
this._escapedAttributes = {};
}
return (0, _createClass2.default)(ParseConfig, [{
key: "get",
value: function (attr) {
return this.attributes[attr];
}
}, {
key: "escape",
value: function (attr) {
var html = this._escapedAttributes[attr];
if (html) {
return html;
}
var val = this.attributes[attr];
var escaped = '';
if (val != null) {
escaped = (0, _escape2.default)(val.toString());
}
this._escapedAttributes[attr] = escaped;
return escaped;
}
}], [{
key: "current",
value: function () {
var controller = _CoreManager.default.getConfigController();
return controller.current();
}
}, {
key: "get",
value: function (options) {
var controller = _CoreManager.default.getConfigController();
return controller.get(options);
}
}, {
key: "save",
value: function (attrs, masterKeyOnlyFlags) {
var controller = _CoreManager.default.getConfigController();
return controller.save(attrs, masterKeyOnlyFlags).then(function () {
return controller.get({
useMasterKey: true
});
}, function (error) {
return Promise.reject(error);
});
}
}, {
key: "_clearCache",
value: function () {
currentConfig = null;
}
}]);
}();
var currentConfig = null;
var CURRENT_CONFIG_KEY = 'currentConfig';
function decodePayload(data) {
try {
var json = JSON.parse(data);
if (json && typeof json === 'object') {
return (0, _decode.default)(json);
}
} catch (_) {
return null;
}
}
var DefaultController = {
current: function () {
if (currentConfig) {
return currentConfig;
}
var config = new ParseConfig();
var storagePath = _Storage.default.generatePath(CURRENT_CONFIG_KEY);
if (!_Storage.default.async()) {
var configData = _Storage.default.getItem(storagePath);
if (configData) {
var attributes = decodePayload(configData);
if (attributes) {
config.attributes = attributes;
currentConfig = config;
}
}
return config;
}
return _Storage.default.getItemAsync(storagePath).then(function (configData) {
if (configData) {
var _attributes = decodePayload(configData);
if (_attributes) {
config.attributes = _attributes;
currentConfig = config;
}
}
return config;
});
},
get: function (options) {
var RESTController = _CoreManager.default.getRESTController();
return RESTController.request('GET', 'config', {}, options).then(function (response) {
if (!response || !response.params) {
var error = new _ParseError.default(_ParseError.default.INVALID_JSON, 'Config JSON response invalid.');
return Promise.reject(error);
}
var config = new ParseConfig();
config.attributes = {};
for (var attr in response.params) {
config.attributes[attr] = (0, _decode.default)(response.params[attr]);
}
currentConfig = config;
return _Storage.default.setItemAsync(_Storage.default.generatePath(CURRENT_CONFIG_KEY), JSON.stringify(response.params)).then(function () {
return config;
});
});
},
save: function (attrs, masterKeyOnlyFlags) {
var RESTController = _CoreManager.default.getRESTController();
var encodedAttrs = {};
for (var key in attrs) {
encodedAttrs[key] = (0, _encode.default)(attrs[key]);
}
return RESTController.request('PUT', 'config', {
params: encodedAttrs,
masterKeyOnly: masterKeyOnlyFlags
}, {
useMasterKey: true
}).then(function (response) {
if (response && response.result) {
return Promise.resolve();
} else {
var error = new _ParseError.default(_ParseError.default.INTERNAL_SERVER_ERROR, 'Error occured updating Config.');
return Promise.reject(error);
}
});
}
};
_CoreManager.default.setConfigController(DefaultController);
var _default = exports.default = ParseConfig;