Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 | 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 2x 11x 11x 11x 1x 2x 2x 2x 2x 1x 1x 1x 2x 1x 1x 1x | import { Component } from '@angular/core'; import { catchError, EMPTY, Observable, take, throwError } from 'rxjs'; import { AsyncPipe, DatePipe } from '@angular/common'; import { Router } from '@angular/router'; import { User } from '@core/model/user.interface'; import { UserService } from '@core/services/user.service'; import { AuthService } from '@core/services/auth.service'; import { SessionService } from '@core/services/session.service'; import { MatCard, MatCardActions, MatCardContent } from '@angular/material/card'; import { MatButton } from '@angular/material/button'; import { ModalService } from '@core/services/modal.service'; import { ConfirmDialogService } from '@core/services/confirm-dialog.service'; import { ApiError } from '@core/errors/api-error'; import { NotificationService } from '@core/services/notification.service'; import { EmailStatus } from '@core/model/email-status'; import { MatIcon } from '@angular/material/icon'; import { ComponentInputDomainData } from '@core/model/component-input-data.interface'; @Component({ selector: 'app-me', imports: [AsyncPipe, DatePipe, MatCard, MatCardContent, MatButton, MatIcon, MatCardActions], templateUrl: './me.component.html', styleUrl: './me.component.scss' }) export class MeComponent { protected user$: Observable<User>; protected EmailStatus = EmailStatus; constructor(private userService: UserService, private authService: AuthService, private sessionService: SessionService, private router: Router, private modalService: ModalService, private dialogService: ConfirmDialogService, private notificationService: NotificationService) { this.user$ = this.userService.getUser(); } public changePassword() :void { this.modalService.openPasswordModal(() => {}); } private endDeleteAccount() :void { this.sessionService.logOut(); this.notificationService.confirmation($localize `:@@info.account_deleted:Your account has been deleted. Thank your for using MyJobs.`); this.router.navigate([""]); } public confirmDeleteAccount() :void { // TODO delete user account this.userService.deleteUser().pipe( take(1) ).subscribe(() => { // first we logout ; it will help prevent the jwt interceptor to try and re-authenticate this.sessionService.logOut(false); this.authService.logout(). pipe( catchError(() => { this.endDeleteAccount(); return EMPTY; }) ) .subscribe(this.endDeleteAccount.bind(this)); }); } public deleteAccount() :void { this.dialogService.openConfirmDialog($localize `:@@warning.user.account_delete:Delete your accout ? All data will be definitely deleted !`, this.confirmDeleteAccount.bind(this)); } public confirmSendVerificationEmail() { this.userService.sendVerificationMail() .subscribe( () => { this.notificationService.confirmation($localize `:@@info.user.validation_email_sent:The verification email has been sent ; please check your emails.`); } ); } public sendVerificationEmail() :void { this.dialogService.openConfirmDialog($localize `:@@action.user.send_validation_email:Send validation email`, this.confirmSendVerificationEmail.bind(this)); } public editUser(user: User) :void { this.modalService.openUserEditModal(user, (data: ComponentInputDomainData) => {this.user$ = this.userService.getUser();}); } } |