From ac34dcd0b519328b200f904fad0d30cf4ed81370 Mon Sep 17 00:00:00 2001 From: rubikscraft Date: Wed, 30 Mar 2022 11:58:26 +0200 Subject: [PATCH] change frontend to custom logger --- frontend/src/app/app.routing.module.ts | 4 +--- .../components/values-picker/values-picker.component.ts | 1 - frontend/src/app/guards/permission.guard.ts | 2 -- .../settings-roles-edit/settings-roles-edit.component.ts | 5 ++++- .../app/routes/settings/roles/settings-roles.component.ts | 5 ++++- .../settings-users-edit/settings-users-edit.component.ts | 7 +++++-- .../app/routes/settings/users/settings-users.component.ts | 5 ++++- frontend/src/app/routes/user/login/login.component.ts | 5 ++++- .../src/app/routes/user/register/register.component.ts | 7 +++++-- frontend/src/app/services/api/api.service.ts | 3 ++- frontend/src/app/services/api/info.service.ts | 3 ++- frontend/src/app/services/api/permission.service.ts | 3 ++- frontend/src/app/services/api/syspref.service.ts | 5 ++++- frontend/src/app/services/api/user.service.ts | 3 ++- frontend/src/app/util/apierror.service.ts | 5 ++++- frontend/src/main.ts | 1 - shared/src/types/failable.ts | 2 -- 17 files changed, 43 insertions(+), 23 deletions(-) diff --git a/frontend/src/app/app.routing.module.ts b/frontend/src/app/app.routing.module.ts index 288071d..3dc6498 100644 --- a/frontend/src/app/app.routing.module.ts +++ b/frontend/src/app/app.routing.module.ts @@ -37,9 +37,7 @@ const routes: PRoutes = [ @NgModule({ imports: [ - RouterModule.forRoot(routes, { - errorHandler: (error) => console.warn(error.message), - }), + RouterModule.forRoot(routes), ], exports: [RouterModule], }) diff --git a/frontend/src/app/components/values-picker/values-picker.component.ts b/frontend/src/app/components/values-picker/values-picker.component.ts index 72cd185..4e7a972 100644 --- a/frontend/src/app/components/values-picker/values-picker.component.ts +++ b/frontend/src/app/components/values-picker/values-picker.component.ts @@ -73,7 +73,6 @@ export class ValuesPickerComponent implements OnInit, OnChanges { } private addItem(value: string) { - console.log('adding', value); const selectable = this.selectableSubject.getValue(); if (this.isDisabled(value) || !selectable.includes(value)) return; diff --git a/frontend/src/app/guards/permission.guard.ts b/frontend/src/app/guards/permission.guard.ts index 6b6af92..2f53de3 100644 --- a/frontend/src/app/guards/permission.guard.ts +++ b/frontend/src/app/guards/permission.guard.ts @@ -35,12 +35,10 @@ export class PermissionGuard implements CanActivate, CanActivateChild { childRoute: ActivatedRouteSnapshot, state: RouterStateSnapshot ) { - //console.log('canActivateChild'); return await this.can(childRoute, state); } async canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) { - //console.log('canActivate'); return await this.can(route, state); } diff --git a/frontend/src/app/routes/settings/roles/settings-roles-edit/settings-roles-edit.component.ts b/frontend/src/app/routes/settings/roles/settings-roles-edit/settings-roles-edit.component.ts index 5682ed0..278e158 100644 --- a/frontend/src/app/routes/settings/roles/settings-roles-edit/settings-roles-edit.component.ts +++ b/frontend/src/app/routes/settings/roles/settings-roles-edit/settings-roles-edit.component.ts @@ -5,6 +5,7 @@ import { SnackBarType } from 'src/app/models/dto/snack-bar-type.dto'; import { UpdateRoleControl } from 'src/app/models/forms/updaterole.control'; import { RolesService } from 'src/app/services/api/roles.service'; import { StaticInfoService } from 'src/app/services/api/static-info.service'; +import { Logger } from 'src/app/services/logger/logger.service'; import { UtilService } from 'src/app/util/util.service'; enum EditMode { @@ -17,6 +18,8 @@ enum EditMode { styleUrls: ['./settings-roles-edit.component.scss'], }) export class SettingsRolesEditComponent implements OnInit { + private readonly logger = new Logger('SettingsRolesEditComponent'); + private mode: EditMode = EditMode.edit; model = new UpdateRoleControl(); @@ -38,7 +41,7 @@ export class SettingsRolesEditComponent implements OnInit { ) {} ngOnInit() { - Promise.all([this.initRole(), this.initPermissions()]).catch(console.error); + Promise.all([this.initRole(), this.initPermissions()]).catch(this.logger.error); } private async initRole() { diff --git a/frontend/src/app/routes/settings/roles/settings-roles.component.ts b/frontend/src/app/routes/settings/roles/settings-roles.component.ts index 751d910..896a8d7 100644 --- a/frontend/src/app/routes/settings/roles/settings-roles.component.ts +++ b/frontend/src/app/routes/settings/roles/settings-roles.component.ts @@ -9,6 +9,7 @@ import { UIFriendlyPermissions } from 'src/app/i18n/permissions.i18n'; import { SnackBarType } from 'src/app/models/dto/snack-bar-type.dto'; import { RolesService } from 'src/app/services/api/roles.service'; import { StaticInfoService } from 'src/app/services/api/static-info.service'; +import { Logger } from 'src/app/services/logger/logger.service'; import { UtilService } from 'src/app/util/util.service'; @Component({ @@ -16,6 +17,8 @@ import { UtilService } from 'src/app/util/util.service'; styleUrls: ['./settings-roles.component.scss'], }) export class SettingsRolesComponent implements OnInit, AfterViewInit { + private readonly logger = new Logger("SettingsRolesComponent"); + public readonly displayedColumns: string[] = [ 'name', 'permissions', @@ -40,7 +43,7 @@ export class SettingsRolesComponent implements OnInit, AfterViewInit { ) {} ngOnInit(): void { - this.loadRoles().catch(console.error); + this.loadRoles().catch(this.logger.error); } ngAfterViewInit() { diff --git a/frontend/src/app/routes/settings/users/settings-users-edit/settings-users-edit.component.ts b/frontend/src/app/routes/settings/users/settings-users-edit/settings-users-edit.component.ts index c577ac6..c810a02 100644 --- a/frontend/src/app/routes/settings/users/settings-users-edit/settings-users-edit.component.ts +++ b/frontend/src/app/routes/settings/users/settings-users-edit/settings-users-edit.component.ts @@ -9,6 +9,7 @@ import { UpdateUserControl } from 'src/app/models/forms/updateuser.control'; import { RolesService } from 'src/app/services/api/roles.service'; import { StaticInfoService } from 'src/app/services/api/static-info.service'; import { UserManageService } from 'src/app/services/api/usermanage.service'; +import { Logger } from 'src/app/services/logger/logger.service'; import { UtilService } from 'src/app/util/util.service'; enum EditMode { @@ -22,6 +23,8 @@ enum EditMode { styleUrls: ['./settings-users-edit.component.scss'], }) export class SettingsUsersEditComponent implements OnInit { + private readonly logger = new Logger('SettingsUsersEditComponent'); + private ImmutableUsersList: string[] = []; private mode: EditMode = EditMode.edit; @@ -53,7 +56,7 @@ export class SettingsUsersEditComponent implements OnInit { this.initUser(), this.initRoles(), this.initImmutableUsersList(), - ]).catch(console.error); + ]).catch(this.logger.error); } private async initUser() { @@ -108,7 +111,7 @@ export class SettingsUsersEditComponent implements OnInit { for (const role of this.model.selectedRoles) { const fullRole = this.allFullRoles.find((r) => r.name === role); if (!fullRole) { - console.warn(`Role ${role} not found`); + this.logger.warn(`Role ${role} not found`); continue; } diff --git a/frontend/src/app/routes/settings/users/settings-users.component.ts b/frontend/src/app/routes/settings/users/settings-users.component.ts index dbe73e7..573870a 100644 --- a/frontend/src/app/routes/settings/users/settings-users.component.ts +++ b/frontend/src/app/routes/settings/users/settings-users.component.ts @@ -8,6 +8,7 @@ import { BehaviorSubject, Subject, throttleTime } from 'rxjs'; import { SnackBarType } from 'src/app/models/dto/snack-bar-type.dto'; import { StaticInfoService } from 'src/app/services/api/static-info.service'; import { UserManageService } from 'src/app/services/api/usermanage.service'; +import { Logger } from 'src/app/services/logger/logger.service'; import { UtilService } from 'src/app/util/util.service'; @Component({ @@ -15,6 +16,8 @@ import { UtilService } from 'src/app/util/util.service'; styleUrls: ['./settings-users.component.scss'], }) export class SettingsUsersComponent implements OnInit { + private readonly logger = new Logger('SettingsUsersComponent'); + private UndeletableUsersList: string[] = []; public readonly displayedColumns: string[] = ['username', 'roles', 'actions']; @@ -40,7 +43,7 @@ export class SettingsUsersComponent implements OnInit { Promise.all([ this.fetchUsers(this.startingPageSize, 0), this.initSpecialUsers(), - ]).catch(console.error); + ]).catch(this.logger.error); } public addUser() { diff --git a/frontend/src/app/routes/user/login/login.component.ts b/frontend/src/app/routes/user/login/login.component.ts index 0eea7d5..96890f6 100644 --- a/frontend/src/app/routes/user/login/login.component.ts +++ b/frontend/src/app/routes/user/login/login.component.ts @@ -7,6 +7,7 @@ import { SnackBarType } from 'src/app/models/dto/snack-bar-type.dto'; import { UserPassModel } from 'src/app/models/forms-dto/userpass.dto'; import { PermissionService } from 'src/app/services/api/permission.service'; import { UserService } from 'src/app/services/api/user.service'; +import { Logger } from 'src/app/services/logger/logger.service'; import { UtilService } from 'src/app/util/util.service'; import { LoginControl } from '../../../models/forms/login.control'; @@ -15,6 +16,8 @@ import { LoginControl } from '../../../models/forms/login.control'; styleUrls: ['./login.component.scss'], }) export class LoginComponent implements OnInit { + private readonly logger = new Logger('LoginComponent'); + showRegister = false; model = new LoginControl(); @@ -51,7 +54,7 @@ export class LoginComponent implements OnInit { const user = await this.userService.login(data.username, data.password); if (HasFailed(user)) { - console.warn(user); + this.logger.warn(user.getReason()); this.utilService.showSnackBar( 'Login failed, please try again', SnackBarType.Error diff --git a/frontend/src/app/routes/user/register/register.component.ts b/frontend/src/app/routes/user/register/register.component.ts index 5757bb9..65595a9 100644 --- a/frontend/src/app/routes/user/register/register.component.ts +++ b/frontend/src/app/routes/user/register/register.component.ts @@ -7,6 +7,7 @@ import { SnackBarType } from 'src/app/models/dto/snack-bar-type.dto'; import { UserPassModel } from 'src/app/models/forms-dto/userpass.dto'; import { PermissionService } from 'src/app/services/api/permission.service'; import { UserService } from 'src/app/services/api/user.service'; +import { Logger } from 'src/app/services/logger/logger.service'; import { UtilService } from 'src/app/util/util.service'; import { RegisterControl } from '../../../models/forms/register.control'; @@ -15,6 +16,8 @@ import { RegisterControl } from '../../../models/forms/register.control'; styleUrls: ['./register.component.scss'], }) export class RegisterComponent implements OnInit { + private readonly logger = new Logger('RegisterComponent'); + showLogin = false; model = new RegisterControl(); @@ -51,7 +54,7 @@ export class RegisterComponent implements OnInit { const user = await this.userService.register(data.username, data.password); if (HasFailed(user)) { - console.warn(user); + this.logger.warn(user.getReason()); this.utilService.showSnackBar( 'Register failed, please try again', SnackBarType.Error @@ -62,7 +65,7 @@ export class RegisterComponent implements OnInit { if (!this.userService.isLoggedIn) { const loginResult = this.userService.login(data.username, data.password); if (HasFailed(loginResult)) { - console.warn(loginResult); + this.logger.warn(loginResult.getReason()); this.utilService.showSnackBar( 'Failed to login after register', SnackBarType.Error diff --git a/frontend/src/app/services/api/api.service.ts b/frontend/src/app/services/api/api.service.ts index 4fa22ad..29ed9cf 100644 --- a/frontend/src/app/services/api/api.service.ts +++ b/frontend/src/app/services/api/api.service.ts @@ -9,6 +9,7 @@ import { strictValidate } from 'picsur-shared/dist/util/validate'; import { Subject } from 'rxjs'; import { ApiError } from 'src/app/models/dto/api-error.dto'; import { MultiPartRequest } from '../../models/dto/multi-part-request.dto'; +import { Logger } from '../logger/logger.service'; import { KeyService } from '../storage/key.service'; /* @@ -19,7 +20,7 @@ import { KeyService } from '../storage/key.service'; providedIn: 'root', }) export class ApiService { - private readonly logger = console; + private readonly logger = new Logger('ApiService'); private errorSubject = new Subject(); diff --git a/frontend/src/app/services/api/info.service.ts b/frontend/src/app/services/api/info.service.ts index 7f97a0a..1a2a527 100644 --- a/frontend/src/app/services/api/info.service.ts +++ b/frontend/src/app/services/api/info.service.ts @@ -4,13 +4,14 @@ import { InfoResponse } from 'picsur-shared/dist/dto/api/info.dto'; import { AsyncFailable, HasFailed } from 'picsur-shared/dist/types'; import { BehaviorSubject } from 'rxjs'; import { ServerInfo } from '../../models/dto/server-info.dto'; +import { Logger } from '../logger/logger.service'; import { ApiService } from './api.service'; @Injectable({ providedIn: 'root', }) export class InfoService { - private readonly logger = console; + private readonly logger = new Logger('InfoService'); public get live() { return this.infoSubject; diff --git a/frontend/src/app/services/api/permission.service.ts b/frontend/src/app/services/api/permission.service.ts index c2a4ec7..178a44f 100644 --- a/frontend/src/app/services/api/permission.service.ts +++ b/frontend/src/app/services/api/permission.service.ts @@ -3,13 +3,14 @@ import { AutoUnsubscribe } from 'ngx-auto-unsubscribe-decorator'; import { UserMePermissionsResponse } from 'picsur-shared/dist/dto/api/user.dto'; import { AsyncFailable, HasFailed } from 'picsur-shared/dist/types'; import { BehaviorSubject, filter, map, Observable, take } from 'rxjs'; +import { Logger } from '../logger/logger.service'; import { ApiService } from './api.service'; import { StaticInfoService } from './static-info.service'; import { UserService } from './user.service'; @Injectable({ providedIn: 'root' }) export class PermissionService { - private readonly logger = console; + private readonly logger = new Logger('PermissionService'); private allPermissions: string[] = []; private permissionsSubject = new BehaviorSubject(null); diff --git a/frontend/src/app/services/api/syspref.service.ts b/frontend/src/app/services/api/syspref.service.ts index 92a7bf3..ebfdced 100644 --- a/frontend/src/app/services/api/syspref.service.ts +++ b/frontend/src/app/services/api/syspref.service.ts @@ -13,6 +13,7 @@ import { AsyncFailable, Fail, HasFailed } from 'picsur-shared/dist/types'; import { BehaviorSubject } from 'rxjs'; import { SnackBarType } from 'src/app/models/dto/snack-bar-type.dto'; import { UtilService } from 'src/app/util/util.service'; +import { Logger } from '../logger/logger.service'; import { ApiService } from './api.service'; import { PermissionService } from './permission.service'; @@ -20,6 +21,8 @@ import { PermissionService } from './permission.service'; providedIn: 'root', }) export class SysprefService { + private readonly logger = new Logger('SysprefService'); + private hasPermission = false; private sysprefObservable = new BehaviorSubject( @@ -40,7 +43,7 @@ export class SysprefService { private utilService: UtilService ) { this.subscribePermissions(); - this.init().catch(console.error); + this.init().catch(this.logger.error); } private async init() { diff --git a/frontend/src/app/services/api/user.service.ts b/frontend/src/app/services/api/user.service.ts index 24bfeac..0a236e1 100644 --- a/frontend/src/app/services/api/user.service.ts +++ b/frontend/src/app/services/api/user.service.ts @@ -13,6 +13,7 @@ import { EUser } from 'picsur-shared/dist/entities/user.entity'; import { AsyncFailable, Fail, HasFailed } from 'picsur-shared/dist/types'; import { strictValidate } from 'picsur-shared/dist/util/validate'; import { BehaviorSubject } from 'rxjs'; +import { Logger } from '../logger/logger.service'; import { KeyService } from '../storage/key.service'; import { ApiService } from './api.service'; @@ -20,7 +21,7 @@ import { ApiService } from './api.service'; providedIn: 'root', }) export class UserService { - private readonly logger = console; + private readonly logger = new Logger('UserService'); private userSubject = new BehaviorSubject(null); public get live() { diff --git a/frontend/src/app/util/apierror.service.ts b/frontend/src/app/util/apierror.service.ts index c9c4862..cac7698 100644 --- a/frontend/src/app/util/apierror.service.ts +++ b/frontend/src/app/util/apierror.service.ts @@ -2,12 +2,15 @@ import { Injectable } from '@angular/core'; import { AutoUnsubscribe } from 'ngx-auto-unsubscribe-decorator'; import { SnackBarType } from '../models/dto/snack-bar-type.dto'; import { ApiService } from '../services/api/api.service'; +import { Logger } from '../services/logger/logger.service'; import { UtilService } from './util.service'; @Injectable({ providedIn: 'root', }) export class ApiErrorService { + private readonly logger = new Logger('ApiErrorService'); + constructor( private apiSerivce: ApiService, private utilService: UtilService @@ -26,7 +29,7 @@ export class ApiErrorService { this.utilService.showSnackBar('Network Error', SnackBarType.Error); } - console.warn(error.error); + this.logger.warn(error.error); }); } } diff --git a/frontend/src/main.ts b/frontend/src/main.ts index 6e1f3c4..76a6ed9 100644 --- a/frontend/src/main.ts +++ b/frontend/src/main.ts @@ -3,7 +3,6 @@ import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; import { AppModule } from './app/app.module'; import Environment from './environments/environment'; - if (Environment.production) { enableProdMode(); } diff --git a/shared/src/types/failable.ts b/shared/src/types/failable.ts index f1f78d4..4d0c3f0 100644 --- a/shared/src/types/failable.ts +++ b/shared/src/types/failable.ts @@ -19,8 +19,6 @@ export type Failable = T | Failure; export type AsyncFailable = Promise>; -// TODO: prevent promise from being allowed in these 2 functions - export function HasFailed(failable: Failable): failable is Failure { if (failable instanceof Promise) throw new Error('Invalid use of HasFailed'); return failable instanceof Failure;