UNPKG

ontimize-web-ngx

Version:
82 lines 15 kB
import { LOCATION_INITIALIZED } from '@angular/common'; import { Injector } from '@angular/core'; import { MAT_RIPPLE_GLOBAL_OPTIONS } from '@angular/material/core'; import { Router } from '@angular/router'; import { combineLatest } from 'rxjs'; import { AppConfig, O_INPUTS_OPTIONS } from '../config/app-config'; import { appConfigFactory } from '../services/app-config.provider'; import { ComponentStateServiceProvider, ExportDataServiceProvider, OntimizeAuthServiceProvider, OntimizeExportServiceProvider, OntimizeServiceProvider, O_MAT_ERROR_OPTIONS, OntimizeLocalStorageServiceProvider } from '../services/factories'; import { LocalStorageService } from '../services/local-storage.service'; import { NavigationService } from '../services/navigation.service'; import { OntimizeMatIconRegistry } from '../services/ontimize-icon-registry.service'; import { OntimizeServiceResponseAdapter } from '../services/ontimize/ontimize-service-response.adapter'; import { ORemoteConfigurationService } from '../services/remote-config.service'; import { Error403Component } from '../shared/components/error403/o-error-403.component'; import { Codes } from '../util/codes'; import { Util } from '../util/util'; function addPermissionsRouteGuard(injector) { const route = injector.get(Router); const exists403 = route.config.find(r => r.path === Codes.FORBIDDEN_ROUTE); if (!exists403) { route.config.push({ path: Codes.FORBIDDEN_ROUTE, component: Error403Component }); } } export function appInitializerFactory(injector, config, oTranslate) { return () => new Promise((resolve) => { const observableArray = []; const locationInitialized = injector.get(LOCATION_INITIALIZED, Promise.resolve(null)); locationInitialized.then(() => { const storedLang = oTranslate.getStoredLanguage(); const configLang = config['locale']; const browserLang = oTranslate.getBrowserLang(); let userLang = Util.isDefined(config['defaultLocale']) ? config['defaultLocale'] : 'en'; let defaultLang = Util.isDefined(config['defaultLocale']) ? config['defaultLocale'] : 'en'; if (storedLang) { userLang = storedLang; } else if (configLang) { userLang = configLang; defaultLang = configLang; } else if (browserLang) { userLang = browserLang; defaultLang = browserLang; } oTranslate.setDefaultLang(defaultLang); const locales = new Set(config.applicationLocales || []); locales.add('en'); locales.add(userLang); if (!config.applicationLocales) { config.applicationLocales = [...locales]; } if (config.uuid == null || config.uuid === '') { console.error('Your app must have an \'uuid\' property defined on your app.config file. Otherwise, your application will not work correctly.'); alert('Your app must have an \'uuid\' property defined on your app.config file. Otherwise, your application will not work correctly.'); } injector.get(NavigationService).initialize(); injector.get(OntimizeMatIconRegistry).initialize(); injector.get(LocalStorageService).setBackwardCompatibility(); addPermissionsRouteGuard(injector); observableArray.push(oTranslate.setAppLang(userLang)); const remoteConfigService = injector.get(ORemoteConfigurationService); observableArray.push(remoteConfigService.initialize()); combineLatest(observableArray).subscribe(() => { resolve(); }); }); }); } export const ONTIMIZE_PROVIDERS = [ { provide: AppConfig, useFactory: appConfigFactory, deps: [Injector] }, OntimizeServiceProvider, OntimizeServiceResponseAdapter, OntimizeAuthServiceProvider, ComponentStateServiceProvider, ExportDataServiceProvider, OntimizeExportServiceProvider, OntimizeLocalStorageServiceProvider, { provide: MAT_RIPPLE_GLOBAL_OPTIONS, useValue: { disabled: true } }, { provide: O_MAT_ERROR_OPTIONS, useValue: {} }, { provide: O_INPUTS_OPTIONS, useValue: {} } ]; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby1wcm92aWRlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvY29uZmlnL28tcHJvdmlkZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxRQUFRLEVBQVksTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDbkUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFckMsT0FBTyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSx5QkFBeUIsRUFBRSwyQkFBMkIsRUFBRSw2QkFBNkIsRUFBRSx1QkFBdUIsRUFBRSxtQkFBbUIsRUFBRSxtQ0FBbUMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2hQLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ3JGLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBQ3hHLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBRWhGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBRXhGLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7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fSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgSW5qZWN0b3IsIFByb3ZpZGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNQVRfUklQUExFX0dMT0JBTF9PUFRJT05TIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgY29tYmluZUxhdGVzdCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBBcHBDb25maWcsIE9fSU5QVVRTX09QVElPTlMgfSBmcm9tICcuLi9jb25maWcvYXBwLWNvbmZpZyc7XG5pbXBvcnQgeyBhcHBDb25maWdGYWN0b3J5IH0gZnJvbSAnLi4vc2VydmljZXMvYXBwLWNvbmZpZy5wcm92aWRlcic7XG5pbXBvcnQgeyBDb21wb25lbnRTdGF0ZVNlcnZpY2VQcm92aWRlciwgRXhwb3J0RGF0YVNlcnZpY2VQcm92aWRlciwgT250aW1pemVBdXRoU2VydmljZVByb3ZpZGVyLCBPbnRpbWl6ZUV4cG9ydFNlcnZpY2VQcm92aWRlciwgT250aW1pemVTZXJ2aWNlUHJvdmlkZXIsIE9fTUFUX0VSUk9SX09QVElPTlMsIE9udGltaXplTG9jYWxTdG9yYWdlU2VydmljZVByb3ZpZGVyIH0gZnJvbSAnLi4vc2VydmljZXMvZmFjdG9yaWVzJztcbmltcG9ydCB7IExvY2FsU3RvcmFnZVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9sb2NhbC1zdG9yYWdlLnNlcnZpY2UnO1xuaW1wb3J0IHsgTmF2aWdhdGlvblNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9uYXZpZ2F0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgT250aW1pemVNYXRJY29uUmVnaXN0cnkgfSBmcm9tICcuLi9zZXJ2aWNlcy9vbnRpbWl6ZS1pY29uLXJlZ2lzdHJ5LnNlcnZpY2UnO1xuaW1wb3J0IHsgT250aW1pemVTZXJ2aWNlUmVzcG9uc2VBZGFwdGVyIH0gZnJvbSAnLi4vc2VydmljZXMvb250aW1pemUvb250aW1pemUtc2VydmljZS1yZXNwb25zZS5hZGFwdGVyJztcbmltcG9ydCB7IE9SZW1vdGVDb25maWd1cmF0aW9uU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3JlbW90ZS1jb25maWcuc2VydmljZSc7XG5pbXBvcnQgeyBPVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3RyYW5zbGF0ZS9vLXRyYW5zbGF0ZS5zZXJ2aWNlJztcbmltcG9ydCB7IEVycm9yNDAzQ29tcG9uZW50IH0gZnJvbSAnLi4vc2hhcmVkL2NvbXBvbmVudHMvZXJyb3I0MDMvby1lcnJvci00MDMuY29tcG9uZW50JztcbmltcG9ydCB7IENvbmZpZyB9IGZyb20gJy4uL3R5cGVzL2NvbmZpZy50eXBlJztcbmltcG9ydCB7IENvZGVzIH0gZnJvbSAnLi4vdXRpbC9jb2Rlcyc7XG5pbXBvcnQgeyBVdGlsIH0gZnJvbSAnLi4vdXRpbC91dGlsJztcblxuZnVuY3Rpb24gYWRkUGVybWlzc2lvbnNSb3V0ZUd1YXJkKGluamVjdG9yOiBJbmplY3Rvcikge1xuICBjb25zdCByb3V0ZSA9IGluamVjdG9yLmdldChSb3V0ZXIpO1xuICBjb25zdCBleGlzdHM0MDMgPSByb3V0ZS5jb25maWcuZmluZChyID0+IHIucGF0aCA9PT0gQ29kZXMuRk9SQklEREVOX1JPVVRFKTtcbiAgaWYgKCFleGlzdHM0MDMpIHtcbiAgICByb3V0ZS5jb25maWcucHVzaCh7IHBhdGg6IENvZGVzLkZPUkJJRERFTl9ST1VURSwgY29tcG9uZW50OiBFcnJvcjQwM0NvbXBvbmVudCB9KTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYXBwSW5pdGlhbGl6ZXJGYWN0b3J5KGluamVjdG9yOiBJbmplY3RvciwgY29uZmlnOiBDb25maWcsIG9UcmFuc2xhdGU6IE9UcmFuc2xhdGVTZXJ2aWNlKSB7XG4gIHJldHVybiAoKSA9PiBuZXcgUHJvbWlzZTxhbnk+KChyZXNvbHZlOiBhbnkpID0+IHtcbiAgICBjb25zdCBvYnNlcnZhYmxlQXJyYXkgPSBbXTtcbiAgICBjb25zdCBsb2NhdGlvbkluaXRpYWxpemVkID0gaW5qZWN0b3IuZ2V0KExPQ0FUSU9OX0lOSVRJQUxJWkVELCBQcm9taXNlLnJlc29sdmUobnVsbCkpO1xuICAgIGxvY2F0aW9uSW5pdGlhbGl6ZWQudGhlbigoKSA9PiB7XG4gICAgICBjb25zdCBzdG9yZWRMYW5nID0gb1RyYW5zbGF0ZS5nZXRTdG9yZWRMYW5ndWFnZSgpO1xuICAgICAgY29uc3QgY29uZmlnTGFuZyA9IGNvbmZpZ1snbG9jYWxlJ107XG4gICAgICBjb25zdCBicm93c2VyTGFuZyA9IG9UcmFuc2xhdGUuZ2V0QnJvd3NlckxhbmcoKTtcbiAgICAgIGxldCB1c2VyTGFuZyA9IFV0aWwuaXNEZWZpbmVkKGNvbmZpZ1snZGVmYXVsdExvY2FsZSddKSA/IGNvbmZpZ1snZGVmYXVsdExvY2FsZSddIDogJ2VuJztcbiAgICAgIGxldCBkZWZhdWx0TGFuZyA9IFV0aWwuaXNEZWZpbmVkKGNvbmZpZ1snZGVmYXVsdExvY2FsZSddKSA/IGNvbmZpZ1snZGVmYXVsdExvY2FsZSddIDogJ2VuJztcbiAgICAgIGlmIChzdG9yZWRMYW5nKSB7XG4gICAgICAgIHVzZXJMYW5nID0gc3RvcmVkTGFuZztcbiAgICAgIH0gZWxzZSBpZiAoY29uZmlnTGFuZykge1xuICAgICAgICB1c2VyTGFuZyA9IGNvbmZpZ0xhbmc7XG4gICAgICAgIGRlZmF1bHRMYW5nID0gY29uZmlnTGFuZztcbiAgICAgIH0gZWxzZSBpZiAoYnJvd3NlckxhbmcpIHtcbiAgICAgICAgdXNlckxhbmcgPSBicm93c2VyTGFuZztcbiAgICAgICAgZGVmYXVsdExhbmcgPSBicm93c2VyTGFuZztcbiAgICAgIH1cbiAgICAgIG9UcmFuc2xhdGUuc2V0RGVmYXVsdExhbmcoZGVmYXVsdExhbmcpO1xuXG4gICAgICBjb25zdCBsb2NhbGVzID0gbmV3IFNldChjb25maWcuYXBwbGljYXRpb25Mb2NhbGVzIHx8IFtdKTtcbiAgICAgIGxvY2FsZXMuYWRkKCdlbicpO1xuICAgICAgbG9jYWxlcy5hZGQodXNlckxhbmcpO1xuXG4gICAgICAvLyBpbml0aWFsaXplIGF2YWlsYWJsZSBsb2NhbGVzIGFycmF5IGlmIG5lZWRlZFxuICAgICAgaWYgKCFjb25maWcuYXBwbGljYXRpb25Mb2NhbGVzKSB7XG4gICAgICAgIGNvbmZpZy5hcHBsaWNhdGlvbkxvY2FsZXMgPSBbLi4ubG9jYWxlc107XG4gICAgICB9XG5cbiAgICAgIGlmIChjb25maWcudXVpZCA9PSBudWxsIHx8IGNvbmZpZy51dWlkID09PSAnJykge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdZb3VyIGFwcCBtdXN0IGhhdmUgYW4gXFwndXVpZFxcJyBwcm9wZXJ0eSBkZWZpbmVkIG9uIHlvdXIgYXBwLmNvbmZpZyBmaWxlLiBPdGhlcndpc2UsIHlvdXIgYXBwbGljYXRpb24gd2lsbCBub3Qgd29yayBjb3JyZWN0bHkuJyk7XG4gICAgICAgIGFsZXJ0KCdZb3VyIGFwcCBtdXN0IGhhdmUgYW4gXFwndXVpZFxcJyBwcm9wZXJ0eSBkZWZpbmVkIG9uIHlvdXIgYXBwLmNvbmZpZyBmaWxlLiBPdGhlcndpc2UsIHlvdXIgYXBwbGljYXRpb24gd2lsbCBub3Qgd29yayBjb3JyZWN0bHkuJyk7XG4gICAgICB9XG4gICAgICBpbmplY3Rvci5nZXQoTmF2aWdhdGlvblNlcnZpY2UpLmluaXRpYWxpemUoKTtcbiAgICAgIGluamVjdG9yLmdldChPbnRpbWl6ZU1hdEljb25SZWdpc3RyeSkuaW5pdGlhbGl6ZSgpO1xuICAgICAgaW5qZWN0b3IuZ2V0KExvY2FsU3RvcmFnZVNlcnZpY2UpLnNldEJhY2t3YXJkQ29tcGF0aWJpbGl0eSgpO1xuICAgICAgYWRkUGVybWlzc2lvbnNSb3V0ZUd1YXJkKGluamVjdG9yKTtcbiAgICAgIG9ic2VydmFibGVBcnJheS5wdXNoKG9UcmFuc2xhdGUuc2V0QXBwTGFuZyh1c2VyTGFuZykpO1xuICAgICAgY29uc3QgcmVtb3RlQ29uZmlnU2VydmljZSA9IGluamVjdG9yLmdldChPUmVtb3RlQ29uZmlndXJhdGlvblNlcnZpY2UpO1xuICAgICAgb2JzZXJ2YWJsZUFycmF5LnB1c2gocmVtb3RlQ29uZmlnU2VydmljZS5pbml0aWFsaXplKCkpO1xuICAgICAgY29tYmluZUxhdGVzdChvYnNlcnZhYmxlQXJyYXkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHJlc29sdmUoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcbn1cblxuZXhwb3J0IGNvbnN0IE9OVElNSVpFX1BST1ZJREVSUzogUHJvdmlkZXJbXSA9IFtcbiAgeyBwcm92aWRlOiBBcHBDb25maWcsIHVzZUZhY3Rvcnk6IGFwcENvbmZpZ0ZhY3RvcnksIGRlcHM6IFtJbmplY3Rvcl0gfSxcbiAgT250aW1pemVTZXJ2aWNlUHJvdmlkZXIsXG4gIE9udGltaXplU2VydmljZVJlc3BvbnNlQWRhcHRlcixcbiAgT250aW1pemVBdXRoU2VydmljZVByb3ZpZGVyLFxuICBDb21wb25lbnRTdGF0ZVNlcnZpY2VQcm92aWRlcixcbiAgRXhwb3J0RGF0YVNlcnZpY2VQcm92aWRlcixcbiAgT250aW1pemVFeHBvcnRTZXJ2aWNlUHJvdmlkZXIsXG4gIE9udGltaXplTG9jYWxTdG9yYWdlU2VydmljZVByb3ZpZGVyLFxuICAvLyBkaXNhYmxlZCBnbG9iYWwgcmlwcGxlXG4gIHsgcHJvdmlkZTogTUFUX1JJUFBMRV9HTE9CQUxfT1BUSU9OUywgdXNlVmFsdWU6IHsgZGlzYWJsZWQ6IHRydWUgfSB9LFxuICB7IHByb3ZpZGU6IE9fTUFUX0VSUk9SX09QVElPTlMsIHVzZVZhbHVlOiB7fSB9LFxuICB7IHByb3ZpZGU6IE9fSU5QVVRTX09QVElPTlMsIHVzZVZhbHVlOiB7fSB9XG5dO1xuIl19