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

70 lines 3.63 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.MetadataService = void 0; const tslib_1 = require("tslib"); const application_context_service_1 = require("./application-context-service"); const dms_api_wrapper_1 = require("../platform-web/dms-api-wrapper"); const injectable_1 = require("../ioc/injectable"); const dms_platform_bridge_factory_1 = require("../platform/dms-platform-bridge-factory"); const dms_root_container_1 = require("../ioc/dms-root-container"); let MetadataService = exports.MetadataService = class MetadataService extends dms_api_wrapper_1.DmsAPIWrapper { constructor(dms) { super(dms); } getEntityMetadata(entity, app) { return tslib_1.__awaiter(this, void 0, void 0, function* () { const md = yield this.getMetadata(app ? app : this.dms.appCode); return md[entity]; }); } getMetadata(appCode) { return tslib_1.__awaiter(this, void 0, void 0, function* () { let language = yield (0, dms_platform_bridge_factory_1.PlatformBridgeFactory)(this.dms).execute("getLanguage", null); let version = dms_root_container_1.RootDIContainer.inject(application_context_service_1.DmsApplicationService).version; const cm = sessionStorage.getItem('$metadata'); let cachedMetadata = cm ? JSON.parse(cm) : {}; if (cachedMetadata && cachedMetadata[appCode]) { if (cachedMetadata[appCode].$language != language) { cachedMetadata = {}; } } if (cachedMetadata && cachedMetadata[appCode]) { if (cachedMetadata[appCode].$version != version) { cachedMetadata = {}; } } if (!cachedMetadata[appCode]) { const auth = yield (0, dms_platform_bridge_factory_1.PlatformBridgeFactory)(this.dms).execute("getSessionKey", null); const appArea = yield (0, dms_platform_bridge_factory_1.PlatformBridgeFactory)(this.dms).execute("getApparea", null); try { let response = yield dms_api_wrapper_1.DmsAPIWrapper.executeApiRequest(appArea, `/storage/entity/${appCode}/$metadata?type=json&language=${language}&isSandBox=${dms_api_wrapper_1.DmsAPIWrapper._isSandbox()}`, 'GET', auth); if (response && response.data) { if (typeof response.data === "string") { response = JSON.parse(response.data); } else { response = response.data; } const appMetadata = response; cachedMetadata[appCode] = appMetadata; cachedMetadata[appCode].$version = version; cachedMetadata[appCode].$language = language; sessionStorage.setItem('$metadata', JSON.stringify(cachedMetadata)); } else { this.processApiError('No response from server'); } } catch (err) { this.processApiError(err); } } return cachedMetadata[appCode]; }); } }; exports.MetadataService = MetadataService = tslib_1.__decorate([ (0, injectable_1.Injectable)(), tslib_1.__metadata("design:paramtypes", [application_context_service_1.DmsApplicationService]) ], MetadataService); //# sourceMappingURL=metadata-service.js.map