dynamicsmobile
Version:
Allows development of off-line mobile and web business apps over the Dynamics Mobile platform. More info on https://www.dynamicsmobile.com
111 lines • 5.13 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.WebPlatformConfigurationManager = exports.CFG_MANAGER_KEY = void 0;
const tslib_1 = require("tslib");
//import { UserInterfaceService } from '../lib-core/userinterface-service';
const dms_root_container_1 = require("../ioc/dms-root-container");
const application_context_service_1 = require("../lib-core/application-context-service");
const dms_api_wrapper_1 = require("./dms-api-wrapper");
const dms_platform_web_device_1 = require("./dms-platform-web-device");
exports.CFG_MANAGER_KEY = "$dmscfg";
class WebPlatformConfigurationManager extends dms_api_wrapper_1.DmsAPIWrapper {
getCfgStorageKey() {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
const dms = dms_root_container_1.RootDIContainer.inject(application_context_service_1.DmsApplicationService);
const device = new dms_platform_web_device_1.WebPlatformDevice(dms);
const userName = yield device.getUsername();
const appArea = yield device.getApparea();
return exports.CFG_MANAGER_KEY + Buffer.from(appArea).toString('base64') + Buffer.from(userName).toString('base64');
});
}
fetchSettingsFromServer() {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
if (window.location.href.indexOf('/Index.html') > 0) {
return [];
}
var settings = {};
var auth = dms_platform_web_device_1.WebPlatformDevice.getAuthroizationToken();
const appArea = yield dms_platform_web_device_1.WebPlatformDevice.getApparea();
let url = dms_api_wrapper_1.DmsAPIWrapper._baseAPIUrl + "/mobile/settings?overrideAppCode=" + this.dms.appCode;
if (window.location.href.indexOf('http://localhost/') < 0) {
//forces production mode if the app works from the cloud
url += '&mode=prod';
}
try {
var response = yield dms_api_wrapper_1.DmsAPIWrapper.executeApiRequest(appArea, url, 'GET', auth);
if (response && response.data) {
if (typeof response.data === "string")
response = JSON.parse(response.data);
else
response = response.data;
if (!response)
response = {};
var cfg = localStorage.getItem(yield this.getCfgStorageKey());
if (cfg && cfg.length > 0) {
//clean tasks
var _cfg = JSON.parse(cfg);
for (var s in _cfg) {
if (s.indexOf('$TSK_') == 0)
_cfg[s] = undefined;
}
settings = Object.assign(Object.assign({}, response), _cfg);
}
else {
settings = Object.assign({}, response);
}
//make all keys uppercase
var key, keys = Object.keys(settings);
var n = keys.length;
var newobj = {};
while (n--) {
key = keys[n];
newobj[key.toUpperCase()] = settings[key];
}
settings = newobj;
return settings;
}
else {
this.processApiError('No response from server');
}
}
catch (err) {
this.processApiError(err);
}
});
}
retreiveSettings() {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
const cfgKey = yield this.getCfgStorageKey();
let cfgObj = {};
let cfgEncodedString = localStorage.getItem(cfgKey);
if (cfgEncodedString && cfgEncodedString.length > 0) {
//clean tasks
try {
const cfgDecodedString = cfgEncodedString;
var _cfg = JSON.parse(cfgDecodedString);
//make all keys uppercase
var key, keys = Object.keys(_cfg);
var n = keys.length;
var newobj = {};
while (n--) {
key = keys[n];
newobj[key.toUpperCase()] = _cfg[key];
}
cfgObj = _cfg;
}
catch (err) {
cfgObj = {};
}
}
return cfgObj;
});
}
saveSettings(settings) {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
const key = yield this.getCfgStorageKey();
localStorage.setItem(key, JSON.stringify((settings ? settings : {})));
});
}
}
exports.WebPlatformConfigurationManager = WebPlatformConfigurationManager;
//# sourceMappingURL=dms-platform-web-configuration-manager.js.map