New Angular based web version #1

Closed
thomas.nuyken wants to merge 150 commits from main into ddd
Showing only changes of commit 1c8e02b3fa - Show all commits

View File

@@ -11,10 +11,13 @@ import { SelectModule } from 'primeng/select';
import { SkeletonModule } from 'primeng/skeleton';
import {
BehaviorSubject,
catchError,
combineLatest,
EMPTY,
map,
Observable,
startWith
startWith,
throwError
} from 'rxjs';
import { EntriesOverviewService } from './services/entries-overview.service';
import { EntryCardComponent } from './components/entry-card/entry-card.component';
@@ -22,6 +25,7 @@ import {
matAddSharp,
} from '@ng-icons/material-icons/sharp';
import { NgIconComponent, provideIcons } from '@ng-icons/core';
import { HttpErrorResponse } from '@angular/common/http';
@Component({
selector: 'app-entries',
@@ -62,7 +66,10 @@ export class EntriesComponent {
constructor() {
const entries = this.entriesOverviewService.getEntries()
.pipe(takeUntilDestroyed());
.pipe(
takeUntilDestroyed(),
catchError((error) => this.handleGetEntriesError(error))
);
this.consumptionEntries$ = combineLatest([
entries,
@@ -97,4 +104,32 @@ export class EntriesComponent {
detail: 'Der Eintrag wurde erfolgreich gelöscht.',
});
}
private handleGetEntriesError(error: unknown): Observable<never> {
if (!(error instanceof HttpErrorResponse)) {
return throwError(() => new Error('An unexpected error occurred'));
}
switch (true) {
case error.status >= 500 && error.status <= 599:
this.messageService.add({
severity: 'error',
summary: 'Serverfehler',
detail:
'Beim Abrufen der Einträge ist ein Fehler aufgetreten. Bitte versuche es erneut.',
});
break;
default:
console.error(error);
this.messageService.add({
severity: 'error',
summary: 'Unerwarteter Fehler',
detail:
'Beim Abrufen der Einträge hat der Server eine unerwartete Antwort zurückgegeben.',
});
break;
}
return EMPTY;
}
}