UNPKG

@universis/common

Version:

Universis - common directives and services

112 lines (111 loc) 12.5 kB
import * as tslib_1 from "tslib"; import { EventEmitter, Injectable, InjectionToken, Injector } from '@angular/core'; import { TranslateService } from '@ngx-translate/core'; import { HttpClient } from '@angular/common/http'; import { isDevMode } from '@angular/core'; import { DATA_CONTEXT_CONFIG } from '@themost/angular'; export let APP_CONFIGURATION = new InjectionToken('app.configuration'); /** * * This Service is used to get or set global configuration for the project * @export * @class ConfigurationService */ export class ConfigurationService { constructor(_translateService, _injector, _http) { this._translateService = _translateService; this._injector = _injector; this._http = _http; this.loaded = new EventEmitter(null); // } /** * * Load Configs saved in Project * @returns {Promise<any>} * @memberof ConfigurationService */ load() { return tslib_1.__awaiter(this, void 0, void 0, function* () { if (this.config) { return true; } // get environment const env = isDevMode() ? 'development' : 'production'; // load configuration based on environment // e.g. assets/config/app.production.json or // assets/config/app.development.json try { return yield this.loadFrom(`assets/config/app.${env}.json`); } catch (err) { if (err.status === 404) { // not found // load default application configuration return yield this.loadFrom(`assets/config/app.json`); } throw err; } }); } loadFrom(url) { return tslib_1.__awaiter(this, void 0, void 0, function* () { // get configuration from url this.config = yield new Promise((resolve, reject) => { this._http.get(url).subscribe(result => { return resolve(result); }, err => { return reject(err); }); }); // get DATA_CONTEXT_CONFIG const dataContextConfig = this._injector.get(DATA_CONTEXT_CONFIG); // IMPORTANT: Set DATA_CONTEXT_CONFIG base URI from configuration dataContextConfig.base = this.config.settings.remote.server; // set locale for translate service this._translateService.use(this.currentLocale); // emit event for loaded configuration this.loaded.emit(this.config); // return return true; }); } /** * Gets current application settings */ get settings() { return this.config && this.config.settings; } /** * Gets the current user language */ get currentLocale() { const currentLang = localStorage.getItem('currentLang'); if (currentLang) { return currentLang; } if (this.settings && this.settings.i18n && this.settings.i18n.defaultLocale) { // return current language return this.settings.i18n.defaultLocale; } // use fallback language return 'en'; } set currentLocale(locale) { // save current locale localStorage.setItem('currentLang', locale); // set locale for translate service this._translateService.use(locale); } } ConfigurationService.decorators = [ { type: Injectable } ]; /** @nocollapse */ ConfigurationService.ctorParameters = () => [ { type: TranslateService }, { type: Injector }, { type: HttpClient } ]; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHVuaXZlcnNpcy9jb21tb24vIiwic291cmNlcyI6WyJzaGFyZWQvc2VydmljZXMvY29uZmlndXJhdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUMsWUFBWSxFQUFVLFVBQVUsRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBaUN2RCxNQUFNLENBQUMsSUFBSSxpQkFBaUIsR0FBRyxJQUFJLGNBQWMsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0FBR3ZFOzs7OztHQUtHO0FBRUgsTUFBTTtJQUlKLFlBQW9CLGlCQUFtQyxFQUNuQyxTQUFtQixFQUNuQixLQUFpQjtRQUZqQixzQkFBaUIsR0FBakIsaUJBQWlCLENBQWtCO1FBQ25DLGNBQVMsR0FBVCxTQUFTLENBQVU7UUFDbkIsVUFBSyxHQUFMLEtBQUssQ0FBWTtRQUg5QixXQUFNLEdBQTJDLElBQUksWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBSTdFLEVBQUU7SUFDSixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDVSxJQUFJOztZQUNmLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtnQkFDZixPQUFPLElBQUksQ0FBQzthQUNiO1lBQ0Qsa0JBQWtCO1lBQ2xCLE1BQU0sR0FBRyxHQUFHLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQztZQUN2RCwwQ0FBMEM7WUFDMUMsNENBQTRDO1lBQzVDLHFDQUFxQztZQUNyQyxJQUFJO2dCQUNGLE9BQU8sTUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLHFCQUFxQixHQUFHLE9BQU8sQ0FBQyxDQUFDO2FBQzdEO1lBQUMsT0FBTyxHQUFHLEVBQUU7Z0JBQ1osSUFBSSxHQUFHLENBQUMsTUFBTSxLQUFLLEdBQUcsRUFBRSxFQUFFLFlBQVk7b0JBQ3BDLHlDQUF5QztvQkFDekMsT0FBTyxNQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsd0JBQXdCLENBQUMsQ0FBQztpQkFDdEQ7Z0JBQ0QsTUFBTSxHQUFHLENBQUM7YUFDWDtRQUNILENBQUM7S0FBQTtJQUVZLFFBQVEsQ0FBQyxHQUFXOztZQUUvQiw2QkFBNkI7WUFDN0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO2dCQUNsRCxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUUsTUFBTSxDQUFDLEVBQUU7b0JBQ3RDLE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUN6QixDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUU7b0JBQ1AsT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ3JCLENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQyxDQUFDLENBQUM7WUFDSCwwQkFBMEI7WUFDMUIsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1lBQ2xFLGlFQUFpRTtZQUNqRSxpQkFBaUIsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztZQUM1RCxtQ0FBbUM7WUFDbkMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDL0Msc0NBQXNDO1lBQ3RDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFrQyxDQUFDLENBQUM7WUFDMUQsU0FBUztZQUNULE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztLQUFBO0lBRUQ7O09BRUc7SUFDSCxJQUFJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUM7SUFDN0MsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBSSxhQUFhO1FBQ2YsTUFBTSxXQUFXLEdBQUcsWUFBWSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN4RCxJQUFJLFdBQVcsRUFBRTtZQUNmLE9BQU8sV0FBVyxDQUFDO1NBQ3BCO1FBQ0QsSUFBSSxJQUFJLENBQUMsUUFBUTtZQUNiLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSTtZQUNsQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDcEMsMEJBQTBCO1lBQzFCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDO1NBQ3pDO1FBQ0Qsd0JBQXdCO1FBQ3hCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELElBQUksYUFBYSxDQUFDLE1BQWM7UUFDOUIsc0JBQXNCO1FBQ3RCLFlBQVksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQzVDLG1DQUFtQztRQUNuQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3JDLENBQUM7OztZQXpGRixVQUFVOzs7O1lBN0NGLGdCQUFnQjtZQURpQyxRQUFRO1lBRXpELFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0V2ZW50RW1pdHRlciwgSW5qZWN0LCBJbmplY3RhYmxlLCBJbmplY3Rpb25Ub2tlbiwgSW5qZWN0b3J9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IGlzRGV2TW9kZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgREFUQV9DT05URVhUX0NPTkZJRyB9IGZyb20gJ0B0aGVtb3N0L2FuZ3VsYXInO1xuaW1wb3J0IHtMb2NhdGlvblBlcm1pc3Npb259IGZyb20gJy4uLy4uL2F1dGgvZ3VhcmRzL2F1dGguZ3VhcmQuaW50ZXJmYWNlcyc7XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIEFwcGxpY2F0aW9uU2V0dGluZ3NDb25maWd1cmF0aW9uIHtcbiAgICBuYW1lPzogc3RyaW5nO1xuICAgIGltYWdlPzogc3RyaW5nO1xuICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAgIHRodW1ibmFpbD86IHN0cmluZztcbn1cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFJlbW90ZVNldHRpbmdzQ29uZmlndXJhdGlvbiB7XG4gIHNlcnZlcjogc3RyaW5nO1xufVxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTG9jYWxpemF0aW9uU2V0dGluZ3NDb25maWd1cmF0aW9uIHtcbiAgbG9jYWxlcz86IEFycmF5PHN0cmluZz47XG4gIHVpTG9jYWxlcz86IEFycmF5PHN0cmluZz47XG4gIGRlZmF1bHRMb2NhbGU/OiBzdHJpbmc7XG4gIGFwcGVuZD86IGFueTtcbn1cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFNldHRpbmdzQ29uZmlndXJhdGlvbiB7XG4gIGFwcD86IEFwcGxpY2F0aW9uU2V0dGluZ3NDb25maWd1cmF0aW9uO1xuICByZW1vdGU6IFJlbW90ZVNldHRpbmdzQ29uZmlndXJhdGlvbjtcbiAgaTE4bj86IExvY2FsaXphdGlvblNldHRpbmdzQ29uZmlndXJhdGlvbjtcbiAgYXV0aD86IGFueTtcbn1cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIEFwcGxpY2F0aW9uQ29uZmlndXJhdGlvbiB7XG4gIHNldHRpbmdzOiBTZXR0aW5nc0NvbmZpZ3VyYXRpb247XG59XG5cbmV4cG9ydCBsZXQgQVBQX0NPTkZJR1VSQVRJT04gPSBuZXcgSW5qZWN0aW9uVG9rZW4oJ2FwcC5jb25maWd1cmF0aW9uJyk7XG5cblxuLyoqXG4gKlxuICogVGhpcyBTZXJ2aWNlIGlzIHVzZWQgdG8gZ2V0IG9yIHNldCBnbG9iYWwgY29uZmlndXJhdGlvbiBmb3IgdGhlIHByb2plY3RcbiAqIEBleHBvcnRcbiAqIEBjbGFzcyBDb25maWd1cmF0aW9uU2VydmljZVxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQ29uZmlndXJhdGlvblNlcnZpY2Uge1xuXG4gIHB1YmxpYyBjb25maWc6IGFueTtcbiAgcHVibGljIGxvYWRlZDogRXZlbnRFbWl0dGVyPEFwcGxpY2F0aW9uQ29uZmlndXJhdGlvbj4gPSBuZXcgRXZlbnRFbWl0dGVyKG51bGwpO1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF90cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgICAgICAgICAgICBwcml2YXRlIF9pbmplY3RvcjogSW5qZWN0b3IsXG4gICAgICAgICAgICAgIHByaXZhdGUgX2h0dHA6IEh0dHBDbGllbnQpIHtcbiAgICAvL1xuICB9XG5cbiAgLyoqXG4gICAqXG4gICAqIExvYWQgQ29uZmlncyBzYXZlZCBpbiBQcm9qZWN0XG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGFueT59XG4gICAqIEBtZW1iZXJvZiBDb25maWd1cmF0aW9uU2VydmljZVxuICAgKi9cbiAgcHVibGljIGFzeW5jIGxvYWQoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgaWYgKHRoaXMuY29uZmlnKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgLy8gZ2V0IGVudmlyb25tZW50XG4gICAgY29uc3QgZW52ID0gaXNEZXZNb2RlKCkgPyAnZGV2ZWxvcG1lbnQnIDogJ3Byb2R1Y3Rpb24nO1xuICAgIC8vIGxvYWQgY29uZmlndXJhdGlvbiBiYXNlZCBvbiBlbnZpcm9ubWVudFxuICAgIC8vIGUuZy4gYXNzZXRzL2NvbmZpZy9hcHAucHJvZHVjdGlvbi5qc29uIG9yXG4gICAgLy8gYXNzZXRzL2NvbmZpZy9hcHAuZGV2ZWxvcG1lbnQuanNvblxuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYXdhaXQgdGhpcy5sb2FkRnJvbShgYXNzZXRzL2NvbmZpZy9hcHAuJHtlbnZ9Lmpzb25gKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGlmIChlcnIuc3RhdHVzID09PSA0MDQpIHsgLy8gbm90IGZvdW5kXG4gICAgICAgIC8vIGxvYWQgZGVmYXVsdCBhcHBsaWNhdGlvbiBjb25maWd1cmF0aW9uXG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmxvYWRGcm9tKGBhc3NldHMvY29uZmlnL2FwcC5qc29uYCk7XG4gICAgICB9XG4gICAgICB0aHJvdyBlcnI7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGFzeW5jIGxvYWRGcm9tKHVybDogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XG5cbiAgICAvLyBnZXQgY29uZmlndXJhdGlvbiBmcm9tIHVybFxuICAgIHRoaXMuY29uZmlnID0gYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgdGhpcy5faHR0cC5nZXQodXJsKS5zdWJzY3JpYmUoIHJlc3VsdCA9PiB7XG4gICAgICAgIHJldHVybiByZXNvbHZlKHJlc3VsdCk7XG4gICAgICB9LCBlcnIgPT4ge1xuICAgICAgICByZXR1cm4gcmVqZWN0KGVycik7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICAvLyBnZXQgREFUQV9DT05URVhUX0NPTkZJR1xuICAgIGNvbnN0IGRhdGFDb250ZXh0Q29uZmlnID0gdGhpcy5faW5qZWN0b3IuZ2V0KERBVEFfQ09OVEVYVF9DT05GSUcpO1xuICAgIC8vIElNUE9SVEFOVDogU2V0IERBVEFfQ09OVEVYVF9DT05GSUcgYmFzZSBVUkkgZnJvbSBjb25maWd1cmF0aW9uXG4gICAgZGF0YUNvbnRleHRDb25maWcuYmFzZSA9IHRoaXMuY29uZmlnLnNldHRpbmdzLnJlbW90ZS5zZXJ2ZXI7XG4gICAgLy8gc2V0IGxvY2FsZSBmb3IgdHJhbnNsYXRlIHNlcnZpY2VcbiAgICB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLnVzZSh0aGlzLmN1cnJlbnRMb2NhbGUpO1xuICAgIC8vIGVtaXQgZXZlbnQgZm9yIGxvYWRlZCBjb25maWd1cmF0aW9uXG4gICAgdGhpcy5sb2FkZWQuZW1pdCh0aGlzLmNvbmZpZyBhcyBBcHBsaWNhdGlvbkNvbmZpZ3VyYXRpb24pO1xuICAgIC8vIHJldHVyblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgY3VycmVudCBhcHBsaWNhdGlvbiBzZXR0aW5nc1xuICAgKi9cbiAgZ2V0IHNldHRpbmdzKCk6IFNldHRpbmdzQ29uZmlndXJhdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnICYmIHRoaXMuY29uZmlnLnNldHRpbmdzO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGN1cnJlbnQgdXNlciBsYW5ndWFnZVxuICAgKi9cbiAgZ2V0IGN1cnJlbnRMb2NhbGUoKTogc3RyaW5nIHtcbiAgICBjb25zdCBjdXJyZW50TGFuZyA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdjdXJyZW50TGFuZycpO1xuICAgIGlmIChjdXJyZW50TGFuZykge1xuICAgICAgcmV0dXJuIGN1cnJlbnRMYW5nO1xuICAgIH1cbiAgICBpZiAodGhpcy5zZXR0aW5ncyAmJlxuICAgICAgICB0aGlzLnNldHRpbmdzLmkxOG4gJiZcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5pMThuLmRlZmF1bHRMb2NhbGUpIHtcbiAgICAgIC8vIHJldHVybiBjdXJyZW50IGxhbmd1YWdlXG4gICAgICByZXR1cm4gdGhpcy5zZXR0aW5ncy5pMThuLmRlZmF1bHRMb2NhbGU7XG4gICAgfVxuICAgIC8vIHVzZSBmYWxsYmFjayBsYW5ndWFnZVxuICAgIHJldHVybiAnZW4nO1xuICB9XG5cbiAgc2V0IGN1cnJlbnRMb2NhbGUobG9jYWxlOiBzdHJpbmcpIHtcbiAgICAvLyBzYXZlIGN1cnJlbnQgbG9jYWxlXG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2N1cnJlbnRMYW5nJywgbG9jYWxlKTtcbiAgICAvLyBzZXQgbG9jYWxlIGZvciB0cmFuc2xhdGUgc2VydmljZVxuICAgIHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UudXNlKGxvY2FsZSk7XG4gIH1cblxufVxuIl19