Fix: Error messages were not properly captured in the frontend.

Feature: F5,6,7 to change between Receipt, Payment and Journal voucher.
This commit is contained in:
2025-07-15 15:29:44 +00:00
parent 11d43f08af
commit e35db8144b
16 changed files with 76 additions and 34 deletions

View File

@ -1,4 +1,4 @@
import { AfterViewInit, Component, ElementRef, inject, OnInit, ViewChild } from '@angular/core';
import { AfterViewInit, ChangeDetectorRef, Component, ElementRef, inject, OnInit, ViewChild } from '@angular/core';
import { FormControl, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';
import { MatButton } from '@angular/material/button';
import { MatCard, MatCardActions, MatCardContent, MatCardHeader, MatCardTitle } from '@angular/material/card';
@ -38,6 +38,7 @@ export class LoginComponent implements OnInit, AfterViewInit {
private router = inject(Router);
private snackBar = inject(MatSnackBar);
private cs = inject(CookieService);
private cd = inject(ChangeDetectorRef);
@ViewChild('nameElement', { static: true }) nameElement!: ElementRef<HTMLInputElement>;
form: FormGroup<{
@ -87,6 +88,7 @@ export class LoginComponent implements OnInit, AfterViewInit {
if (error.status === 401 && error.error.detail === 'Client is not registered') {
this.showOtp = true;
this.clientId = this.cs.getCookie('client_id');
this.cd.detectChanges();
}
this.snackBar.open(error.error.details, 'Danger');
},

View File

@ -20,13 +20,13 @@ export const authInterceptor: HttpInterceptorFn = (req, next) => {
if (req.url.includes('/refresh')) {
inject(AuthService).logout();
}
return throwError(() => new Error(err));
return throwError(() => err);
}
// If error status is different than 401 we want to skip refresh token
// So we check that and throw the error if it's the case
if (err.status !== 401) {
const error = err.error.message || err.error.detail || err.statusText;
return throwError(() => new Error(error));
return throwError(() => error);
}
// auto logout if 401 response returned from api
inject(AuthService).logout();
@ -46,7 +46,7 @@ export const authInterceptor: HttpInterceptorFn = (req, next) => {
inject(Router).navigate(['login']);
}
});
return throwError(() => new Error(err));
return throwError(() => err);
}),
);
};

View File

@ -132,6 +132,23 @@ export class JournalComponent implements OnInit, AfterViewInit {
this.dateElement.nativeElement.select();
}
@HostListener('window:keydown.f5', ['$event'])
redirectToPayment(event: KeyboardEvent) {
event.preventDefault();
this.router.navigate(['payment']);
}
@HostListener('window:keydown.f6', ['$event'])
redirectToReciept(event: KeyboardEvent) {
event.preventDefault();
this.router.navigate(['receipt']);
}
@HostListener('window:keydown.f7', ['$event'])
redirectToJournal(event: KeyboardEvent) {
event.preventDefault();
}
@HostListener('window:keydown.control.s', ['$event'])
saveListner(event: KeyboardEvent) {
event.preventDefault();

View File

@ -132,6 +132,27 @@ export class PaymentComponent implements OnInit, AfterViewInit {
this.dateElement.nativeElement.select();
}
@HostListener('window:keydown.f5', ['$event'])
redirectToPayment(event: KeyboardEvent) {
event.preventDefault();
}
@HostListener('window:keydown.f6', ['$event'])
redirectToReciept(event: KeyboardEvent) {
event.preventDefault();
this.router.navigate(['receipt'], {
queryParams: {
a: this.form.controls.paymentAccount.value,
},
});
}
@HostListener('window:keydown.f7', ['$event'])
redirectToJournal(event: KeyboardEvent) {
event.preventDefault();
this.router.navigate(['journal']);
}
@HostListener('window:keydown.control.s', ['$event'])
saveListner(event: KeyboardEvent) {
event.preventDefault();

View File

@ -132,6 +132,27 @@ export class ReceiptComponent implements OnInit, AfterViewInit {
this.dateElement.nativeElement.select();
}
@HostListener('window:keydown.f5', ['$event'])
redirectToPayment(event: KeyboardEvent) {
event.preventDefault();
this.router.navigate(['payment'], {
queryParams: {
a: this.form.controls.receiptAccount.value,
},
});
}
@HostListener('window:keydown.f6', ['$event'])
redirectToReciept(event: KeyboardEvent) {
event.preventDefault();
}
@HostListener('window:keydown.f7', ['$event'])
redirectToJournal(event: KeyboardEvent) {
event.preventDefault();
this.router.navigate(['journal']);
}
@HostListener('window:keydown.control.s', ['$event'])
saveListner(event: KeyboardEvent) {
event.preventDefault();