refactor: throw proper error on registration conflict, handle properly #187

Merged
ptran merged 3 commits from refactor-register into main 2025-05-14 09:24:02 +00:00
Showing only changes of commit e7e43839eb - Show all commits

View file

@ -16,7 +16,7 @@ export class RegisterComponent {
registerForm: FormGroup; registerForm: FormGroup;
errorMessage = signal<string>(''); errorMessage = signal<string>('');
isLoading = signal<boolean>(false); isLoading = signal<boolean>(false);
fieldErrors = signal<{ [key: string]: string }>({}); fieldErrors = signal<Record<string, string>>({});
constructor( constructor(
private fb: FormBuilder, private fb: FormBuilder,
@ -51,7 +51,6 @@ export class RegisterComponent {
this.authService.register(registerRequest).subscribe({ this.authService.register(registerRequest).subscribe({
next: () => { next: () => {
// After registration, log in the user
this.authService this.authService
.login({ .login({
usernameOrEmail: registerRequest.email, usernameOrEmail: registerRequest.email,
@ -73,18 +72,20 @@ export class RegisterComponent {
this.isLoading.set(false); this.isLoading.set(false);
if (err.status === 409) { if (err.status === 409) {
const errorResponse = err.error; const message = err.error?.message;
switch (message) {
if (errorResponse?.message === 'Email is already in use') { case 'Email is already in use':
this.fieldErrors.update((errors) => ({ this.fieldErrors.update(errors => ({
...errors, ...errors,
email: 'Diese E-Mail-Adresse wird bereits verwendet.', email: 'Diese E-Mail-Adresse wird bereits verwendet.'
})); }));
} else if (errorResponse?.message === 'Username is already taken') { break;
this.fieldErrors.update((errors) => ({ case 'Username is already taken':
this.fieldErrors.update(errors => ({
...errors, ...errors,
username: 'Dieser Benutzername ist bereits vergeben.', username: 'Dieser Benutzername ist bereits vergeben.'
})); }));
break;
} }
} else { } else {
this.errorMessage.set(err.error?.message || 'Failed to register. Please try again.'); this.errorMessage.set(err.error?.message || 'Failed to register. Please try again.');