From d9deb52607e7f7bd0ff5561655b5c87b6a63f463 Mon Sep 17 00:00:00 2001 From: Richard Cox Date: Fri, 29 May 2020 15:29:40 +0100 Subject: [PATCH 1/2] Fix issue where default add/remove setting in change role by username was incorrect - add/remove radio button default value governed by add/remove feature flags - when one is set to false the radio button should be disabled and the other selected --- .../manage-users-set-usernames.component.html | 6 ++--- .../manage-users-set-usernames.component.ts | 23 +++++++------------ 2 files changed, 11 insertions(+), 18 deletions(-) diff --git a/src/frontend/packages/cloud-foundry/src/features/cloud-foundry/users/manage-users/manage-users-set-usernames/manage-users-set-usernames.component.html b/src/frontend/packages/cloud-foundry/src/features/cloud-foundry/users/manage-users/manage-users-set-usernames/manage-users-set-usernames.component.html index c1d88ad0d8..6d2ce160a2 100644 --- a/src/frontend/packages/cloud-foundry/src/features/cloud-foundry/users/manage-users/manage-users-set-usernames/manage-users-set-usernames.component.html +++ b/src/frontend/packages/cloud-foundry/src/features/cloud-foundry/users/manage-users/manage-users-set-usernames/manage-users-set-usernames.component.html @@ -1,10 +1,10 @@
- - + + Add Roles{{(canAdd$ | async) ? '' : ' (Disabled via feature flag)'}} - + Remove Roles{{(canRemove$ | async) ? '' : ' (Disabled via feature flag)'}}
diff --git a/src/frontend/packages/cloud-foundry/src/features/cloud-foundry/users/manage-users/manage-users-set-usernames/manage-users-set-usernames.component.ts b/src/frontend/packages/cloud-foundry/src/features/cloud-foundry/users/manage-users/manage-users-set-usernames/manage-users-set-usernames.component.ts index db0ede2260..47298b73f1 100644 --- a/src/frontend/packages/cloud-foundry/src/features/cloud-foundry/users/manage-users/manage-users-set-usernames/manage-users-set-usernames.component.ts +++ b/src/frontend/packages/cloud-foundry/src/features/cloud-foundry/users/manage-users/manage-users-set-usernames/manage-users-set-usernames.component.ts @@ -2,7 +2,7 @@ import { Component, OnInit } from '@angular/core'; import { MatRadioChange } from '@angular/material/radio'; import { Store } from '@ngrx/store'; import { BehaviorSubject, combineLatest, Observable, of } from 'rxjs'; -import { first, map, publishReplay, refCount, startWith, switchMap, take, tap } from 'rxjs/operators'; +import { first, map, publishReplay, refCount, startWith, switchMap, take } from 'rxjs/operators'; import { PermissionConfig, PermissionTypes } from '../../../../../../../core/src/core/current-user-permissions.config'; import { CurrentUserPermissionsService } from '../../../../../../../core/src/core/current-user-permissions.service'; @@ -50,6 +50,7 @@ export class ManageUsersSetUsernamesComponent implements OnInit { public canAdd$: Observable; public canRemove$: Observable; public blocked$: Observable; + public currentValue: boolean; public stackedActionConfig: StackedInputActionConfig = { isEmailInput: false, @@ -71,22 +72,12 @@ export class ManageUsersSetUsernamesComponent implements OnInit { const ffRemovePermConfig = new PermissionConfig(PermissionTypes.FEATURE_FLAG, CFFeatureFlagTypes.unset_roles_by_username); this.canAdd$ = waitForCFPermissions(store, activeRouteCfOrgSpace.cfGuid).pipe( switchMap(() => userPerms.can(ffSetPermConfig, activeRouteCfOrgSpace.cfGuid)), - tap(canAdd => { - if (!canAdd) { - this.setIsRemove({ source: null, value: false }); - } - }), first(), publishReplay(1), refCount() ); this.canRemove$ = waitForCFPermissions(store, activeRouteCfOrgSpace.cfGuid).pipe( switchMap(() => userPerms.can(ffRemovePermConfig, activeRouteCfOrgSpace.cfGuid)), - tap(canRemove => { - if (!canRemove) { - this.setIsRemove({ source: null, value: true }); - } - }), first(), publishReplay(1), refCount() @@ -94,8 +85,10 @@ export class ManageUsersSetUsernamesComponent implements OnInit { this.blocked$ = combineLatest([this.canAdd$, this.canRemove$]).pipe( map(([canAdd, canRemove]) => { - if (canAdd && canRemove) { - // Set initial value to be add + // Set initial value + if (canAdd && canRemove || canAdd) { + this.setIsRemove({ source: null, value: false }); + } else { this.setIsRemove({ source: null, value: true }); } return false; @@ -125,8 +118,8 @@ export class ManageUsersSetUsernamesComponent implements OnInit { } setIsRemove(event: MatRadioChange) { - // Note - event.value is flipped - this.store.dispatch(new UsersRolesSetIsRemove(!event.value)); + this.store.dispatch(new UsersRolesSetIsRemove(event.value)); + this.currentValue = event.value; } onNext: StepOnNextFunction = () => { From f4d6df9827c150dfd9eb1bfa7bfeb6f759209925 Mon Sep 17 00:00:00 2001 From: Richard Cox Date: Tue, 2 Jun 2020 13:38:52 +0100 Subject: [PATCH 2/2] Clean default/blocked logic --- .../manage-users-set-usernames.component.ts | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/src/frontend/packages/cloud-foundry/src/features/cloud-foundry/users/manage-users/manage-users-set-usernames/manage-users-set-usernames.component.ts b/src/frontend/packages/cloud-foundry/src/features/cloud-foundry/users/manage-users/manage-users-set-usernames/manage-users-set-usernames.component.ts index 47298b73f1..c3e6d0aef4 100644 --- a/src/frontend/packages/cloud-foundry/src/features/cloud-foundry/users/manage-users/manage-users-set-usernames/manage-users-set-usernames.component.ts +++ b/src/frontend/packages/cloud-foundry/src/features/cloud-foundry/users/manage-users/manage-users-set-usernames/manage-users-set-usernames.component.ts @@ -2,7 +2,7 @@ import { Component, OnInit } from '@angular/core'; import { MatRadioChange } from '@angular/material/radio'; import { Store } from '@ngrx/store'; import { BehaviorSubject, combineLatest, Observable, of } from 'rxjs'; -import { first, map, publishReplay, refCount, startWith, switchMap, take } from 'rxjs/operators'; +import { first, map, publishReplay, refCount, startWith, switchMap } from 'rxjs/operators'; import { PermissionConfig, PermissionTypes } from '../../../../../../../core/src/core/current-user-permissions.config'; import { CurrentUserPermissionsService } from '../../../../../../../core/src/core/current-user-permissions.service'; @@ -83,18 +83,18 @@ export class ManageUsersSetUsernamesComponent implements OnInit { refCount() ); - this.blocked$ = combineLatest([this.canAdd$, this.canRemove$]).pipe( - map(([canAdd, canRemove]) => { - // Set initial value - if (canAdd && canRemove || canAdd) { - this.setIsRemove({ source: null, value: false }); - } else { - this.setIsRemove({ source: null, value: true }); - } - return false; - }), + const canAddRemove = combineLatest([this.canAdd$, this.canRemove$]); + + // Set starting value of add/remove radio button + canAddRemove.pipe(first()).subscribe(([canAdd]) => this.setIsRemove({ source: null, value: !canAdd })) + + // Block content until we know the add/remove state + this.blocked$ = canAddRemove.pipe( + map(() => false), + first(), startWith(true), - take(2) + publishReplay(1), + refCount(), ); }