refactor: improve readability and add JSDoc comments in VerifyEmailComponent

This commit is contained in:
Chneemann 2025-05-03 09:46:19 +02:00
parent fa8a30e940
commit 973c5bac83

View file

@ -1,9 +1,8 @@
import { Component } from '@angular/core'; import { Component } from '@angular/core';
import { ActivatedRoute, RouterLink } from '@angular/router'; import { ActivatedRoute, Params, RouterLink } from '@angular/router';
import { AuthService } from '../../../services/auth.service'; import { AuthService } from '../../../services/auth.service';
import { ErrorService } from '../../../services/error.service'; import { ErrorService } from '../../../services/error.service';
import { CommonModule } from '@angular/common'; import { CommonModule } from '@angular/common';
import { HttpErrorResponse } from '@angular/common/http';
@Component({ @Component({
selector: 'app-verify-email', selector: 'app-verify-email',
@ -21,27 +20,56 @@ export class VerifyEmailComponent {
send: false, send: false,
}; };
/**
* Initializes the VerifyEmailComponent with ActivatedRoute, AuthService, and ErrorService.
*/
constructor( constructor(
private route: ActivatedRoute, private route: ActivatedRoute,
private authService: AuthService, private authService: AuthService,
public errorService: ErrorService public errorService: ErrorService
) {} ) {}
/**
* Lifecycle hook that is called after data-bound properties are initialized.
* Subscribes to query parameters and triggers email verification.
*/
ngOnInit(): void { ngOnInit(): void {
this.handleQueryParams();
}
/**
* Subscribes to the query parameters from the route and extracts authentication data.
* Then triggers the email verification process.
*/
private handleQueryParams(): void {
this.route.queryParams.subscribe((params) => { this.route.queryParams.subscribe((params) => {
this.authData.mail = params['email'] || ''; this.extractAuthParams(params);
this.authData.token = params['token'] || '';
this.verifyEmail(); this.verifyEmail();
}); });
} }
async verifyEmail() { /**
* Extracts the 'email' and 'token' parameters from the query and assigns them to authData.
*
* @param params The query parameters from the route.
*/
private extractAuthParams(params: Params): void {
this.authData.mail = params['email'] || '';
this.authData.token = params['token'] || '';
}
/**
* Sends a request to verify the user's email using the extracted authentication data.
* Sets the appropriate flags based on the result and handles errors if any occur.
*/
private async verifyEmail(): Promise<void> {
const body = { const body = {
email: this.authData.mail.toLowerCase(), email: this.authData.mail.toLowerCase(),
token: this.authData.token, token: this.authData.token,
}; };
this.authData.send = true;
try { try {
this.authData.send = true;
await this.authService.verifyEmail(body); await this.authService.verifyEmail(body);
this.verified = true; this.verified = true;
this.errorService.clearError(); this.errorService.clearError();