UNPKG

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
"use strict"; 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