mirror of
https://gitlab.com/openstapps/openstapps.git
synced 2026-01-20 08:33:11 +00:00
@@ -23,6 +23,7 @@ import {TranslateService} from '@ngx-translate/core';
|
||||
import {AppComponent} from './app.component';
|
||||
import {ConfigProvider} from './modules/config/config.provider';
|
||||
import {SettingsProvider} from './modules/settings/settings.provider';
|
||||
import {NGXLogger} from "ngx-logger";
|
||||
|
||||
describe('AppComponent', () => {
|
||||
|
||||
@@ -33,6 +34,7 @@ describe('AppComponent', () => {
|
||||
let translateServiceSpy: jasmine.SpyObj<TranslateService>;
|
||||
let settingsProvider: jasmine.SpyObj<SettingsProvider>;
|
||||
let configProvider: jasmine.SpyObj<ConfigProvider>;
|
||||
let ngxLogger: jasmine.SpyObj<NGXLogger>;
|
||||
|
||||
beforeEach(async(() => {
|
||||
statusBarSpy = jasmine.createSpyObj('StatusBar', ['styleDefault']);
|
||||
@@ -44,6 +46,8 @@ describe('AppComponent', () => {
|
||||
['getSettingValue', 'provideSetting', 'setCategoriesOrder']);
|
||||
configProvider = jasmine.createSpyObj('ConfigProvider',
|
||||
['init']);
|
||||
ngxLogger = jasmine.createSpyObj('NGXLogger',
|
||||
['log', 'error', 'warn']);
|
||||
|
||||
TestBed.configureTestingModule({
|
||||
declarations: [AppComponent],
|
||||
@@ -54,6 +58,7 @@ describe('AppComponent', () => {
|
||||
{provide: TranslateService, useValue: translateServiceSpy},
|
||||
{provide: SettingsProvider, useValue: settingsProvider},
|
||||
{provide: ConfigProvider, useValue: configProvider},
|
||||
{provide: NGXLogger, useValue: ngxLogger},
|
||||
],
|
||||
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
||||
}).compileComponents();
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2018, 2019 StApps
|
||||
* Copyright (C) 2018-2020 StApps
|
||||
* This program is free software: you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the Free
|
||||
* Software Foundation, version 3.
|
||||
@@ -17,7 +17,7 @@ import {SplashScreen} from '@ionic-native/splash-screen/ngx';
|
||||
import {StatusBar} from '@ionic-native/status-bar/ngx';
|
||||
import {Platform} from '@ionic/angular';
|
||||
import {TranslateService} from '@ngx-translate/core';
|
||||
import {Logger} from '@openstapps/logger';
|
||||
import {NGXLogger} from 'ngx-logger';
|
||||
import {ConfigProvider} from './modules/config/config.provider';
|
||||
import {SettingsProvider} from './modules/settings/settings.provider';
|
||||
|
||||
@@ -51,13 +51,15 @@ export class AppComponent {
|
||||
* @param translateService TODO
|
||||
* @param settingsProvider TODO
|
||||
* @param configProvider TODO
|
||||
* @param logger An angular logger
|
||||
*/
|
||||
constructor(private readonly platform: Platform,
|
||||
private readonly statusBar: StatusBar,
|
||||
private readonly splashScreen: SplashScreen,
|
||||
private readonly translateService: TranslateService,
|
||||
private readonly settingsProvider: SettingsProvider,
|
||||
private readonly configProvider: ConfigProvider) {
|
||||
private readonly configProvider: ConfigProvider,
|
||||
private readonly logger: NGXLogger) {
|
||||
this.initializeApp();
|
||||
|
||||
// this language will be used as a fallback when a translation isn't found in the current language
|
||||
@@ -84,7 +86,7 @@ export class AppComponent {
|
||||
// @TODO: Issue #43 handle initialisation error and inform user
|
||||
}
|
||||
}
|
||||
await Logger.error(error);
|
||||
this.logger.error(error);
|
||||
}
|
||||
|
||||
// set order of categories in settings
|
||||
@@ -100,7 +102,7 @@ export class AppComponent {
|
||||
const languageCode = (await this.settingsProvider.getValue('profile', 'language')) as string;
|
||||
this.translateService.use(languageCode);
|
||||
} catch (error) {
|
||||
Logger.warn(error);
|
||||
this.logger.warn(error);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2018, 2019 StApps
|
||||
* Copyright (C) 2018-2020 StApps
|
||||
* This program is free software: you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the Free
|
||||
* Software Foundation, version 3.
|
||||
@@ -23,7 +23,8 @@ import {StatusBar} from '@ionic-native/status-bar/ngx';
|
||||
import {IonicModule, IonicRouteStrategy} from '@ionic/angular';
|
||||
import {TranslateLoader, TranslateModule} from '@ngx-translate/core';
|
||||
import {TranslateHttpLoader} from '@ngx-translate/http-loader';
|
||||
import {fakeBackendProvider} from './_helpers/fake-backend.interceptor';
|
||||
import {LoggerModule, NgxLoggerLevel} from 'ngx-logger';
|
||||
import {environment} from '../environments/environment';
|
||||
import {AppRoutingModule} from './app-routing.module';
|
||||
import {AppComponent} from './app.component';
|
||||
import {ConfigModule} from './modules/config/config.module';
|
||||
@@ -31,7 +32,7 @@ import {DataModule} from './modules/data/data.module';
|
||||
import {MenuModule} from './modules/menu/menu.module';
|
||||
import {SettingsModule} from './modules/settings/settings.module';
|
||||
import {StorageModule} from './modules/storage/storage.module';
|
||||
import {environment} from './../environments/environment';
|
||||
import {fakeBackendProvider} from './_helpers/fake-backend.interceptor';
|
||||
|
||||
registerLocaleData(localeDe);
|
||||
|
||||
@@ -80,6 +81,8 @@ const providers : Provider[] = [
|
||||
useFactory: (createTranslateLoader),
|
||||
},
|
||||
}),
|
||||
// use maximal logging level when not in production, minimal (log only fatal errors) in production
|
||||
LoggerModule.forRoot({level: environment.production ? NgxLoggerLevel.FATAL : NgxLoggerLevel.TRACE}),
|
||||
],
|
||||
providers:
|
||||
environment.use_fake_backend ? [providers, fakeBackendProvider] : providers,
|
||||
|
||||
@@ -18,6 +18,7 @@ import {StAppsWebHttpClient} from '../data/stapps-web-http-client.provider';
|
||||
import {StorageProvider} from '../storage/storage.provider';
|
||||
import {ConfigProvider, STORAGE_KEY_CONFIG} from './config.provider';
|
||||
import {ConfigFetchError, ConfigInitError, SavedConfigNotAvailable, WrongConfigVersionInStorage,} from './errors';
|
||||
import {NGXLogger} from "ngx-logger";
|
||||
|
||||
describe('ConfigProvider', () => {
|
||||
let configProvider: ConfigProvider;
|
||||
@@ -26,6 +27,7 @@ describe('ConfigProvider', () => {
|
||||
beforeEach(() => {
|
||||
const storageProviderMethodSpy = jasmine.createSpyObj('StorageProvider', ['init', 'get', 'has', 'put']);
|
||||
const webHttpClientMethodSpy = jasmine.createSpyObj('StAppsWebHttpClient', ['request']);
|
||||
const ngxLogger: jasmine.SpyObj<NGXLogger> = jasmine.createSpyObj('NGXLogger', ['log', 'error', 'warn']);
|
||||
|
||||
TestBed.configureTestingModule({
|
||||
imports: [],
|
||||
@@ -37,6 +39,9 @@ describe('ConfigProvider', () => {
|
||||
{
|
||||
provide: StAppsWebHttpClient, useValue: webHttpClientMethodSpy,
|
||||
},
|
||||
{
|
||||
provide: NGXLogger, useValue: ngxLogger,
|
||||
},
|
||||
],
|
||||
});
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2019 StApps
|
||||
* Copyright (C) 2019, 2020 StApps
|
||||
* This program is free software: you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the Free
|
||||
* Software Foundation, version 3.
|
||||
@@ -15,7 +15,7 @@
|
||||
import {Injectable} from '@angular/core';
|
||||
import {Client} from '@openstapps/api/lib/client';
|
||||
import {SCAppConfiguration, SCIndexResponse} from '@openstapps/core';
|
||||
import {Logger} from '@openstapps/logger';
|
||||
import {NGXLogger} from 'ngx-logger';
|
||||
import {environment} from '../../../environments/environment';
|
||||
import {StAppsWebHttpClient} from '../data/stapps-web-http-client.provider';
|
||||
import {StorageProvider} from '../storage/storage.provider';
|
||||
@@ -55,10 +55,13 @@ export class ConfigProvider {
|
||||
/**
|
||||
* Constructor, initialise api client
|
||||
*
|
||||
* @param storageProvider StorageProvider to load persistet configuration
|
||||
* @param storageProvider StorageProvider to load persistent configuration
|
||||
* @param swHttpClient Api client
|
||||
* @param logger An angular logger
|
||||
*/
|
||||
constructor(private readonly storageProvider: StorageProvider, swHttpClient: StAppsWebHttpClient) {
|
||||
constructor(private readonly storageProvider: StorageProvider,
|
||||
swHttpClient: StAppsWebHttpClient,
|
||||
private readonly logger: NGXLogger) {
|
||||
this.client = new Client(swHttpClient, environment.backend_url, environment.backend_version);
|
||||
}
|
||||
|
||||
@@ -109,10 +112,10 @@ export class ConfigProvider {
|
||||
try {
|
||||
this.config = await this.loadLocal();
|
||||
this.initialised = true;
|
||||
Logger.log(`initialised configuration from storage`);
|
||||
this.logger.log(`initialised configuration from storage`);
|
||||
if (this.config.backend.SCVersion !== environment.backend_version) {
|
||||
loadError = new WrongConfigVersionInStorage(environment.backend_version, this.config.backend.SCVersion);
|
||||
Logger.warn(loadError);
|
||||
this.logger.warn(loadError);
|
||||
}
|
||||
} catch (error) {
|
||||
loadError = error;
|
||||
@@ -122,7 +125,7 @@ export class ConfigProvider {
|
||||
const fetchedConfig: SCIndexResponse = await this.fetch();
|
||||
await this.set(fetchedConfig);
|
||||
this.initialised = true;
|
||||
Logger.log(`initialised configuration from remote`);
|
||||
this.logger.log(`initialised configuration from remote`);
|
||||
} catch (error) {
|
||||
fetchError = error;
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2018, 2019, 2020 StApps
|
||||
* Copyright (C) 2018-2020 StApps
|
||||
* This program is free software: you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the Free
|
||||
* Software Foundation, version 3.
|
||||
@@ -21,7 +21,7 @@ import {
|
||||
SCSearchSort,
|
||||
SCThing,
|
||||
} from '@openstapps/core';
|
||||
import {Logger} from '@openstapps/logger';
|
||||
import {NGXLogger} from 'ngx-logger';
|
||||
import {Subject} from 'rxjs';
|
||||
import {debounceTime, distinctUntilChanged} from 'rxjs/operators';
|
||||
import {MenuService} from '../../menu/menu.service';
|
||||
@@ -82,12 +82,15 @@ export class DataListComponent implements OnInit {
|
||||
* @param alertController AlertController
|
||||
* @param dataProvider DataProvider
|
||||
* @param menuService MenuService
|
||||
* @param settingsProvider SettingsProvider
|
||||
* @param logger An angular logger
|
||||
*/
|
||||
constructor(
|
||||
private readonly alertController: AlertController,
|
||||
private dataProvider: DataProvider,
|
||||
private readonly dataProvider: DataProvider,
|
||||
private readonly menuService: MenuService,
|
||||
private readonly settingsProvider: SettingsProvider,
|
||||
private readonly logger: NGXLogger,
|
||||
) {
|
||||
this.queryTextChanged
|
||||
.pipe(
|
||||
@@ -116,7 +119,7 @@ export class DataListComponent implements OnInit {
|
||||
this.settingsProvider.settingsActionChanged$.subscribe(({type, payload}) => {
|
||||
if (type === 'stapps.settings.changed') {
|
||||
const {category, name, value} = payload!;
|
||||
Logger.log(`received event "settings.changed" with category:
|
||||
this.logger.log(`received event "settings.changed" with category:
|
||||
${category}, name: ${name}, value: ${JSON.stringify(value)}`);
|
||||
}
|
||||
},
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2018, 2019 StApps
|
||||
* Copyright (C) 2018-2020 StApps
|
||||
* This program is free software: you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the Free
|
||||
* Software Foundation, version 3.
|
||||
@@ -15,7 +15,7 @@
|
||||
import {Component} from '@angular/core';
|
||||
import {LangChangeEvent, TranslateService} from '@ngx-translate/core';
|
||||
import {SCAppConfigurationMenuCategory, SCLanguage, SCThingTranslator, SCTranslations} from '@openstapps/core';
|
||||
import {Logger} from '@openstapps/logger';
|
||||
import {NGXLogger} from 'ngx-logger';
|
||||
import {ConfigProvider} from '../../config/config.provider';
|
||||
|
||||
/**
|
||||
@@ -46,8 +46,9 @@ export class NavigationComponent {
|
||||
*/
|
||||
translator: SCThingTranslator;
|
||||
|
||||
constructor(private configProvider: ConfigProvider,
|
||||
public translateService: TranslateService) {
|
||||
constructor(private readonly configProvider: ConfigProvider,
|
||||
public translateService: TranslateService,
|
||||
private readonly logger: NGXLogger) {
|
||||
this.loadMenuEntries();
|
||||
translateService.onLangChange.subscribe((event: LangChangeEvent) => {
|
||||
this.language = event.lang as keyof SCTranslations<SCLanguage>;
|
||||
@@ -63,7 +64,7 @@ export class NavigationComponent {
|
||||
try {
|
||||
this.menu = await this.configProvider.getValue('menus') as SCAppConfigurationMenuCategory[];
|
||||
} catch (error) {
|
||||
Logger.error(`error from loading menu entries: ${error}`);
|
||||
this.logger.error(`error from loading menu entries: ${error}`);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -14,7 +14,6 @@
|
||||
*/
|
||||
import {enableProdMode} from '@angular/core';
|
||||
import {platformBrowserDynamic} from '@angular/platform-browser-dynamic';
|
||||
import {Logger} from '@openstapps/logger';
|
||||
import {AppModule} from './app/app.module';
|
||||
import {environment} from './environments/environment';
|
||||
|
||||
@@ -24,4 +23,5 @@ if (environment.production) {
|
||||
|
||||
platformBrowserDynamic()
|
||||
.bootstrapModule(AppModule)
|
||||
.catch(async (err) => await Logger.error(err));
|
||||
// tslint:disable-next-line:no-console
|
||||
.catch(async (err) => console.error(err));
|
||||
|
||||
Reference in New Issue
Block a user