11import { Component , NgZone , OnInit , TemplateRef , ViewChild } from '@angular/core' ;
22
3- import { forkJoin as observableForkJoin , Observable , Subscriber , Subject } from 'rxjs' ;
3+ import { forkJoin as observableForkJoin , Observable , Subscriber , Subject , of } from 'rxjs' ;
44import { RgwUserAccountsService } from '~/app/shared/api/rgw-user-accounts.service' ;
55
66import { RgwUserService } from '~/app/shared/api/rgw-user.service' ;
@@ -20,7 +20,7 @@ import { AuthStorageService } from '~/app/shared/services/auth-storage.service';
2020import { ModalCdsService } from '~/app/shared/services/modal-cds.service' ;
2121import { URLBuilderService } from '~/app/shared/services/url-builder.service' ;
2222import { Account } from '../models/rgw-user-accounts' ;
23- import { switchMap } from 'rxjs/operators' ;
23+ import { catchError , map , switchMap } from 'rxjs/operators' ;
2424import { RgwUser } from '../models/rgw-user' ;
2525
2626const BASE_URL = 'rgw/user' ;
@@ -43,7 +43,7 @@ export class RgwUserListComponent extends ListWithDetails implements OnInit {
4343 permission : Permission ;
4444 tableActions : CdTableAction [ ] ;
4545 columns : CdTableColumn [ ] = [ ] ;
46- users : object [ ] = [ ] ;
46+ users : RgwUser [ ] = [ ] ;
4747 userAccounts : Account [ ] ;
4848 selection : CdTableSelection = new CdTableSelection ( ) ;
4949 userDataSubject = new Subject ( ) ;
@@ -121,15 +121,19 @@ export class RgwUserListComponent extends ListWithDetails implements OnInit {
121121 flexGrow : 0.8
122122 }
123123 ] ;
124+
124125 this . userDataSubject
125126 . pipe (
126- switchMap ( ( _ : object [ ] ) => {
127- return this . rgwUserAccountService . list ( true ) ;
128- } )
127+ switchMap ( ( users : RgwUser [ ] ) =>
128+ this . rgwUserAccountService . list ( true ) . pipe (
129+ map ( ( accounts : Account [ ] ) => ( { users, accounts } ) ) ,
130+ catchError ( ( ) => of ( { users, accounts : [ ] } ) )
131+ )
132+ )
129133 )
130- . subscribe ( ( accounts : Account [ ] ) => {
134+ . subscribe ( ( { users , accounts } ) => {
131135 this . userAccounts = accounts ;
132- this . mapUsersWithAccount ( ) ;
136+ this . users = this . mapUsersWithAccount ( users ) ;
133137 } ) ;
134138
135139 const getUserUri = ( ) =>
@@ -161,8 +165,7 @@ export class RgwUserListComponent extends ListWithDetails implements OnInit {
161165 getUserList ( context : CdTableFetchDataContext ) {
162166 this . setTableRefreshTimeout ( ) ;
163167 this . rgwUserService . list ( ) . subscribe (
164- ( resp : object [ ] ) => {
165- this . users = resp ;
168+ ( resp : RgwUser [ ] ) => {
166169 this . userDataSubject . next ( resp ) ;
167170 } ,
168171 ( ) => {
@@ -171,9 +174,9 @@ export class RgwUserListComponent extends ListWithDetails implements OnInit {
171174 ) ;
172175 }
173176
174- mapUsersWithAccount ( ) {
175- this . users = this . users . map ( ( user : RgwUser ) => {
176- const account : Account = this . userAccounts . find ( ( acc ) => acc . id === user . account_id ) ;
177+ mapUsersWithAccount ( users : RgwUser [ ] ) : RgwUser [ ] {
178+ return users . map ( ( user : RgwUser ) => {
179+ const account : Account = this . userAccounts . find ( ( acc : Account ) => acc . id === user . account_id ) ;
177180 return {
178181 account : account ? account : { name : '' } , // adding {name: ''} for sorting account name in user list to work
179182 ...user
0 commit comments