
* Updated to Angular 14 * Fixed all new tslint issues * Fixed a routing bug for Angular 14 * Updated ngBootstrap and bootstrap. Fixed side nav item not highlighting on route change * Refactored how default dark styles are done * Migrated everything to a typed form * Bump versions by dotnet-bump-version. * Fixed a regression where click areas need an explicit z-index * Cleanup some css * Bumped docnet back to the alpha which has our downstream fixes * Updated dependencies to later versions. Mainly just NetVips with some archive fixes. * Fixed broken unit tests (due to some fixes in SharpCompress that changed byte arrays, but not visible quality)
65 lines
2.4 KiB
TypeScript
65 lines
2.4 KiB
TypeScript
import { ChangeDetectionStrategy, ChangeDetectorRef, Component } from '@angular/core';
|
|
import { UntypedFormControl, UntypedFormGroup, Validators } from '@angular/forms';
|
|
import { ActivatedRoute, Router } from '@angular/router';
|
|
import { ToastrService } from 'ngx-toastr';
|
|
import { ThemeService } from 'src/app/_services/theme.service';
|
|
import { AccountService } from 'src/app/_services/account.service';
|
|
import { NavService } from 'src/app/_services/nav.service';
|
|
|
|
@Component({
|
|
selector: 'app-confirm-email',
|
|
templateUrl: './confirm-email.component.html',
|
|
styleUrls: ['./confirm-email.component.scss'],
|
|
changeDetection: ChangeDetectionStrategy.OnPush
|
|
})
|
|
export class ConfirmEmailComponent {
|
|
/**
|
|
* Email token used for validating
|
|
*/
|
|
token: string = '';
|
|
|
|
registerForm: UntypedFormGroup = new UntypedFormGroup({
|
|
email: new UntypedFormControl('', [Validators.required, Validators.email]),
|
|
username: new UntypedFormControl('', [Validators.required]),
|
|
password: new UntypedFormControl('', [Validators.required, Validators.maxLength(32), Validators.minLength(6)]),
|
|
});
|
|
|
|
/**
|
|
* Validation errors from API
|
|
*/
|
|
errors: Array<string> = [];
|
|
|
|
|
|
constructor(private route: ActivatedRoute, private router: Router, private accountService: AccountService,
|
|
private toastr: ToastrService, private themeService: ThemeService, private navService: NavService,
|
|
private readonly cdRef: ChangeDetectorRef) {
|
|
this.navService.hideSideNav();
|
|
this.themeService.setTheme(this.themeService.defaultTheme);
|
|
const token = this.route.snapshot.queryParamMap.get('token');
|
|
const email = this.route.snapshot.queryParamMap.get('email');
|
|
this.cdRef.markForCheck();
|
|
if (token == undefined || token === '' || token === null) {
|
|
// This is not a valid url, redirect to login
|
|
this.toastr.error('Invalid confirmation email');
|
|
this.router.navigateByUrl('login');
|
|
return;
|
|
}
|
|
this.token = token;
|
|
this.registerForm.get('email')?.setValue(email || '');
|
|
this.cdRef.markForCheck();
|
|
}
|
|
|
|
submit() {
|
|
let model = this.registerForm.getRawValue();
|
|
model.token = this.token;
|
|
this.accountService.confirmEmail(model).subscribe((user) => {
|
|
this.toastr.success('Account registration complete');
|
|
this.router.navigateByUrl('login');
|
|
}, err => {
|
|
console.log('error: ', err);
|
|
this.errors = err;
|
|
this.cdRef.markForCheck();
|
|
});
|
|
}
|
|
|
|
}
|