@universis/common
Version:
Universis - common directives and services
112 lines (111 loc) • 12.5 kB
JavaScript
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