11import { Component , OnInit , Injectable } from '@angular/core' ;
22import { AppService } from '../app.service' ;
33import { FormBuilder , FormGroup } from '@angular/forms' ;
4- import { CloudAppConfigService , CloudAppEventsService , CloudAppRestService } from '@exlibris/exl-cloudapp-angular-lib' ;
4+ import { CloudAppConfigService , CloudAppEventsService , CloudAppRestService , InitData } from '@exlibris/exl-cloudapp-angular-lib' ;
55import { ToastrService } from 'ngx-toastr' ;
66import { CanActivate , Router } from '@angular/router' ;
7- import { Observable } from 'rxjs' ;
8- import { map , flatMap } from 'rxjs/operators' ;
7+ import { Observable , iif , of } from 'rxjs' ;
8+ import { map , switchMap } from 'rxjs/operators' ;
99import { ErrorMessages } from '../static/error.component' ;
1010
1111@Component ( {
@@ -67,11 +67,14 @@ export class ConfigurationGuard implements CanActivate {
6767 canActivate ( ) : Observable < boolean > {
6868 return this . eventsService . getInitData ( ) . pipe (
6969 /* Until primaryId is available: */
70- map ( data => `first_name~${ encodeURIComponent ( data . user . firstName . replace ( ' ' , '+' ) ) } +AND+last_name~${ encodeURIComponent ( data . user . lastName . replace ( ' ' , '+' ) ) } ` ) ,
71- flatMap ( query => this . restService . call ( `/users?q=${ query } ` ) ) ,
72- map ( resp => resp . user [ 0 ] . primary_id ) ,
73- // map( data => data.user.primaryId ),
74- flatMap ( primaryId => this . restService . call ( `/users/${ primaryId } ` ) ) ,
70+ switchMap ( data => iif ( ( ) =>
71+ data . user . primaryId == null ,
72+ this . restService . call ( `/users?q=${ query ( data ) } ` ) . pipe (
73+ map ( resp => resp . user [ 0 ] . primary_id )
74+ ) ,
75+ of ( data . user . primaryId )
76+ ) ) ,
77+ switchMap ( primaryId => this . restService . call ( `/users/${ primaryId } ` ) ) ,
7578 map ( user => {
7679 if ( ! user . user_role . some ( role => role . role_type . value == '221' ) ) {
7780 this . router . navigate ( [ '/error' ] ,
@@ -83,3 +86,6 @@ export class ConfigurationGuard implements CanActivate {
8386 ) ;
8487 }
8588}
89+
90+ const query = ( data : InitData ) => `first_name~${ q ( data . user . firstName ) } +AND+last_name~${ q ( data . user . lastName ) } ` ;
91+ const q = val => encodeURIComponent ( val . replace ( ' ' , '+' ) ) ;
0 commit comments