mirror of
https://github.com/CaramelFur/Picsur.git
synced 2026-05-07 06:07:40 +02:00
change frontend to custom logger
This commit is contained in:
@@ -37,9 +37,7 @@ const routes: PRoutes = [
|
||||
|
||||
@NgModule({
|
||||
imports: [
|
||||
RouterModule.forRoot(routes, {
|
||||
errorHandler: (error) => console.warn(error.message),
|
||||
}),
|
||||
RouterModule.forRoot(routes),
|
||||
],
|
||||
exports: [RouterModule],
|
||||
})
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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() {
|
||||
|
||||
@@ -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() {
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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() {
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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<ApiError>();
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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<string[] | null>(null);
|
||||
|
||||
@@ -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<SysPreferenceBaseResponse[]>(
|
||||
@@ -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() {
|
||||
|
||||
@@ -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<EUser | null>(null);
|
||||
|
||||
public get live() {
|
||||
|
||||
@@ -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);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -19,8 +19,6 @@ export type Failable<T> = T | Failure;
|
||||
|
||||
export type AsyncFailable<T> = Promise<Failable<T>>;
|
||||
|
||||
// TODO: prevent promise from being allowed in these 2 functions
|
||||
|
||||
export function HasFailed<T>(failable: Failable<T>): failable is Failure {
|
||||
if (failable instanceof Promise) throw new Error('Invalid use of HasFailed');
|
||||
return failable instanceof Failure;
|
||||
|
||||
Reference in New Issue
Block a user