From 6295bd8c4420278878af9c694df9785cdcccd25d Mon Sep 17 00:00:00 2001 From: "k.triantafyllou" Date: Mon, 24 Oct 2022 17:21:32 +0300 Subject: [PATCH] Role verification: Fix a bug after success verification, error modal is appeared. --- .../role-verification.component.ts | 53 +++++++++++-------- 1 file changed, 30 insertions(+), 23 deletions(-) diff --git a/role-verification/role-verification.component.ts b/role-verification/role-verification.component.ts index 269f4409..1113c994 100644 --- a/role-verification/role-verification.component.ts +++ b/role-verification/role-verification.component.ts @@ -4,7 +4,7 @@ import {ActivatedRoute, Router} from "@angular/router"; import {UserManagementService} from "../services/user-management.service"; import {UserRegistryService} from "../services/user-registry.service"; import {LoginErrorCodes} from "../login/utils/guardHelper.class"; -import {Subscriber} from "rxjs"; +import {Subscriber, Subscription} from "rxjs"; import {UntypedFormBuilder, UntypedFormControl, Validators} from "@angular/forms"; import {AlertModal} from "../utils/modal/alert"; import {properties} from "../../../environments/environment"; @@ -80,7 +80,8 @@ export class RoleVerificationComponent implements OnInit, OnDestroy, AfterViewIn public user: User; public verification: any; public code: UntypedFormControl; - private subs: any[] = []; + private subscriptions: any[] = []; + private paramsSubscription: Subscription; @ViewChild('managerModal') managerModal: AlertModal; @ViewChild('memberModal') memberModal: AlertModal; @ViewChild('errorModal') errorModal: AlertModal; @@ -101,12 +102,15 @@ export class RoleVerificationComponent implements OnInit, OnDestroy, AfterViewIn } ngAfterViewInit() { - this.subs.push(this.route.queryParams.subscribe(params => { - if (params && params['verify']) { - this.subs.push(this.userManagementService.getUserInfo().subscribe(user => { - this.user = user; - if (this.user) { - this.subs.push(this.userRegistryService.getInvitation(params['verify']).subscribe(verification => { + this.subscriptions.push(this.userManagementService.getUserInfo().subscribe(user => { + this.user = user; + if (this.user) { + if(this.paramsSubscription instanceof Subscription) { + this.paramsSubscription.unsubscribe(); + } + this.paramsSubscription = this.route.queryParams.subscribe(params => { + if (params && params['verify']) { + this.subscriptions.push(this.userRegistryService.getInvitation(params['verify']).subscribe(verification => { this.verification = verification; if (this.user.email === this.verification.email.toLowerCase() && this.id === this.verification.entity && this.type === this.verification.type) { if (this.verification.verificationType === 'manager') { @@ -122,23 +126,26 @@ export class RoleVerificationComponent implements OnInit, OnDestroy, AfterViewIn }, error => { this.openErrorModal(); })); - } else { - this.router.navigate(['/user-info'], { - queryParams: { - 'errorCode': LoginErrorCodes.NOT_LOGIN, - 'redirectUrl': this.router.url - } - }); } - })); + }); + } else { + this.router.navigate(['/user-info'], { + queryParams: { + 'errorCode': LoginErrorCodes.NOT_LOGIN, + 'redirectUrl': this.router.url + } + }); } })); } ngOnDestroy() { - this.subs.forEach(value => { - if (value instanceof Subscriber) { - value.unsubscribe(); + if(this.paramsSubscription instanceof Subscription) { + this.paramsSubscription.unsubscribe(); + } + this.subscriptions.forEach(subscription => { + if (subscription instanceof Subscriber) { + subscription.unsubscribe(); } }); } @@ -174,7 +181,7 @@ export class RoleVerificationComponent implements OnInit, OnDestroy, AfterViewIn public verifyManager() { this.loading = true; - this.subs.push(this.userRegistryService.verify(this.verification.id, this.code.value).subscribe(() => { + this.subscriptions.push(this.userRegistryService.verify(this.verification.id, this.code.value).subscribe(() => { this.managerModal.cancel(); this.error = null; this.userManagementService.updateUserInfo(() => { @@ -182,9 +189,9 @@ export class RoleVerificationComponent implements OnInit, OnDestroy, AfterViewIn this.loading = false; this.router.navigate(['/admin/' + this.verification.entity]); } else { - this.subs.push(this.emailService.notifyManagers(this.id, 'manager', + this.subscriptions.push(this.emailService.notifyManagers(this.id, 'manager', Composer.composeEmailToInformOldManagersForTheNewOnes(this.name, this.id)).subscribe(() => { - this.subs.push(this.emailService.notifyNewManager(Composer.composeEmailForNewManager(this.id, this.name)).subscribe( + this.subscriptions.push(this.emailService.notifyNewManager(Composer.composeEmailForNewManager(this.id, this.name)).subscribe( () => { this.loading = false; window.location.href = properties.adminPortalURL + '/' + this.verification.entity; @@ -211,7 +218,7 @@ export class RoleVerificationComponent implements OnInit, OnDestroy, AfterViewIn public verifyMember() { this.loading = true; if (!this.isMember) { - this.subs.push(this.userRegistryService.verify(this.verification.id, this.code.value, "member").subscribe(() => { + this.subscriptions.push(this.userRegistryService.verify(this.verification.id, this.code.value, "member").subscribe(() => { this.loading = false; this.error = null; this.userManagementService.updateUserInfo(() => {