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
JavaScript
;
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