67 lines
1.8 KiB
TypeScript
67 lines
1.8 KiB
TypeScript
import { Component, OnInit } from '@angular/core'; // Import OnInit
|
|
import { Router, RouterModule } from '@angular/router';
|
|
import { AuthService } from '../../cores/services/auth.service';
|
|
import { FormsModule } from '@angular/forms';
|
|
import { RegistrationData } from '../../cores/interface/auth';
|
|
import { ToastrService } from 'ngx-toastr';
|
|
import { CommonModule } from '@angular/common';
|
|
|
|
@Component({
|
|
selector: 'app-register',
|
|
standalone: true,
|
|
imports: [FormsModule, RouterModule, CommonModule],
|
|
templateUrl: './register.component.html',
|
|
styleUrls: ['./register.component.scss']
|
|
})
|
|
export class RegisterComponent implements OnInit {
|
|
username: string = '';
|
|
password: string = '';
|
|
email: string = '';
|
|
fullname: string = '';
|
|
loading: boolean = false;
|
|
passwordVisible: boolean = false;
|
|
|
|
constructor(private authService: AuthService, private router: Router, private toast: ToastrService) {}
|
|
|
|
ngOnInit(): void {
|
|
this.username = '';
|
|
this.password = '';
|
|
this.email = '';
|
|
this.fullname = '';
|
|
}
|
|
|
|
togglePasswordVisibility() {
|
|
this.passwordVisible = !this.passwordVisible;
|
|
}
|
|
|
|
onSubmit() {
|
|
this.loading = true;
|
|
if (!this.username || !this.password || !this.email || !this.fullname) {
|
|
this.loading = false;
|
|
this.toast.error('Please fill in all fields.');
|
|
return;
|
|
}
|
|
|
|
const registrationData: RegistrationData = {
|
|
username: this.username,
|
|
pwd: this.password,
|
|
email: this.email,
|
|
google_id: '1',
|
|
fullname: this.fullname,
|
|
avatar: ''
|
|
};
|
|
|
|
this.authService.register(registrationData).subscribe(
|
|
(response) => {
|
|
this.loading = false;
|
|
this.toast.success('Registration successful');
|
|
this.router.navigate(['/auth']);
|
|
},
|
|
(error) => {
|
|
this.loading = false;
|
|
this.toast.error(error.error.message);
|
|
}
|
|
);
|
|
}
|
|
}
|