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..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, tap } 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';
@@ -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,37 +72,29 @@ 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()
);
- this.blocked$ = combineLatest([this.canAdd$, this.canRemove$]).pipe(
- map(([canAdd, canRemove]) => {
- if (canAdd && canRemove) {
- // Set initial value to be add
- 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(),
);
}
@@ -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 = () => {