18123: Invert group member is visible logic
authorStephen Smith <stephen@curii.com>
Mon, 13 Dec 2021 00:24:17 +0000 (19:24 -0500)
committerStephen Smith <stephen@curii.com>
Mon, 13 Dec 2021 00:24:17 +0000 (19:24 -0500)
Arvados-DCO-1.1-Signed-off-by: Stephen Smith <stephen@curii.com>

cypress/integration/group-manage.spec.js
src/store/group-details-panel/group-details-panel-actions.ts
src/views-components/data-explorer/renderers.tsx
src/views/group-details-panel/group-details-panel.tsx

index e638c6489bfa43e2487b8df13f84176f116c2709..cae69efb4e021fbb72161ae40c908230fa97be97 100644 (file)
@@ -121,7 +121,7 @@ describe('Group manage tests', function() {
             .contains('Other User')
             .parents('tr')
             .within(() => {
             .contains('Other User')
             .parents('tr')
             .within(() => {
-                cy.get('[data-cy=user-hidden-checkbox]').click();
+                cy.get('[data-cy=user-visible-checkbox]').click();
             });
         // Check that other user is visible
         cy.get('[data-cy=group-details-permissions-tab]').click();
             });
         // Check that other user is visible
         cy.get('[data-cy=group-details-permissions-tab]').click();
@@ -137,7 +137,7 @@ describe('Group manage tests', function() {
             .contains('Other User')
             .parents('tr')
             .within(() => {
             .contains('Other User')
             .parents('tr')
             .within(() => {
-                cy.get('[data-cy=user-hidden-checkbox]').click();
+                cy.get('[data-cy=user-visible-checkbox]').click();
             });
         // Check that other user is hidden
         cy.get('[data-cy=group-details-permissions-tab]').click();
             });
         // Check that other user is hidden
         cy.get('[data-cy=group-details-permissions-tab]').click();
@@ -247,7 +247,7 @@ describe('Group manage tests', function() {
             cy.get('[data-cy=group-members-data-explorer]')
                 .within(() => {
                     cy.get('[data-cy=group-member-add]').should('not.exist');
             cy.get('[data-cy=group-members-data-explorer]')
                 .within(() => {
                     cy.get('[data-cy=group-member-add]').should('not.exist');
-                    cy.get('[data-cy=user-hidden-checkbox] input').should('be.disabled');
+                    cy.get('[data-cy=user-visible-checkbox] input').should('be.disabled');
                     cy.get('[data-cy=resource-delete-button]').should('be.disabled');
                     cy.get('[data-cy=edit-permission-button]').should('not.exist');
                 });
                     cy.get('[data-cy=resource-delete-button]').should('be.disabled');
                     cy.get('[data-cy=edit-permission-button]').should('not.exist');
                 });
index 8130869fdef9d0f5620eaaca5420d8aca168e145..e00ff77340514714053f20a9bb1ed74b227f79f5 100644 (file)
@@ -104,15 +104,16 @@ export const removeGroupMember = (uuid: string) =>
 
     };
 
 
     };
 
-export const setMemberIsHidden = (memberLinkUuid: string, permissionLinkUuid: string, hide: boolean) =>
+export const setMemberIsHidden = (memberLinkUuid: string, permissionLinkUuid: string, visible: boolean) =>
     async (dispatch: Dispatch, getState: () => RootState, { permissionService }: ServiceRepository) => {
         const memberLink = getResource<LinkResource>(memberLinkUuid)(getState().resources);
 
     async (dispatch: Dispatch, getState: () => RootState, { permissionService }: ServiceRepository) => {
         const memberLink = getResource<LinkResource>(memberLinkUuid)(getState().resources);
 
-        if (hide && permissionLinkUuid) {
+        if (!visible && permissionLinkUuid) {
             // Remove read permission
             try {
                 await permissionService.delete(permissionLinkUuid);
                 dispatch<any>(deleteResources([permissionLinkUuid]));
             // Remove read permission
             try {
                 await permissionService.delete(permissionLinkUuid);
                 dispatch<any>(deleteResources([permissionLinkUuid]));
+                dispatch(GroupPermissionsPanelActions.REQUEST_ITEMS());
                 dispatch(snackbarActions.OPEN_SNACKBAR({
                     message: 'Removed read permission.',
                     hideDuration: 2000,
                 dispatch(snackbarActions.OPEN_SNACKBAR({
                     message: 'Removed read permission.',
                     hideDuration: 2000,
@@ -124,7 +125,7 @@ export const setMemberIsHidden = (memberLinkUuid: string, permissionLinkUuid: st
                     kind: SnackbarKind.ERROR,
                 }));
             }
                     kind: SnackbarKind.ERROR,
                 }));
             }
-        } else if (!hide && memberLink) {
+        } else if (visible && memberLink) {
             // Create read permission
             try {
                 await permissionService.create({
             // Create read permission
             try {
                 await permissionService.create({
index 84d5c5690d4e037ede884215bb4622d43cad8a6e..2ec4bf51558f632d47ddca2fcf65cb5cb9f8d7d8 100644 (file)
@@ -218,23 +218,23 @@ export const ResourceLinkTailIsActive = connect(
 const renderIsHidden = (props: {
                             memberLinkUuid: string,
                             permissionLinkUuid: string,
 const renderIsHidden = (props: {
                             memberLinkUuid: string,
                             permissionLinkUuid: string,
-                            hidden: boolean,
+                            visible: boolean,
                             canManage: boolean,
                             setMemberIsHidden: (memberLinkUuid: string, permissionLinkUuid: string, hide: boolean) => void 
                         }) => {
     if (props.memberLinkUuid) {
         return <Checkbox
                             canManage: boolean,
                             setMemberIsHidden: (memberLinkUuid: string, permissionLinkUuid: string, hide: boolean) => void 
                         }) => {
     if (props.memberLinkUuid) {
         return <Checkbox
-                data-cy="user-hidden-checkbox"
+                data-cy="user-visible-checkbox"
                 color="primary"
                 color="primary"
-                checked={props.hidden}
+                checked={props.visible}
                 disabled={!props.canManage}
                 disabled={!props.canManage}
-                onClick={() => props.setMemberIsHidden(props.memberLinkUuid, props.permissionLinkUuid, !props.hidden)} />;
+                onClick={() => props.setMemberIsHidden(props.memberLinkUuid, props.permissionLinkUuid, !props.visible)} />;
     } else {
         return <Typography />;
     }
 }
 
     } else {
         return <Typography />;
     }
 }
 
-export const ResourceLinkTailIsHidden = connect(
+export const ResourceLinkTailIsVisible = connect(
     (state: RootState, props: { uuid: string }) => {
         const link = getResource<LinkResource>(props.uuid)(state.resources);
         const member = getResource<Resource>(link?.tailUuid || '')(state.resources);
     (state: RootState, props: { uuid: string }) => {
         const link = getResource<LinkResource>(props.uuid)(state.resources);
         const member = getResource<Resource>(link?.tailUuid || '')(state.resources);
@@ -252,8 +252,8 @@ export const ResourceLinkTailIsHidden = connect(
         const isBuiltin = isBuiltinGroup(link?.headUuid || '');
 
         return member?.kind === ResourceKind.USER
         const isBuiltin = isBuiltinGroup(link?.headUuid || '');
 
         return member?.kind === ResourceKind.USER
-            ? { memberLinkUuid: link?.uuid, permissionLinkUuid, hidden: !isVisible, canManage: !isBuiltin }
-            : { memberLinkUuid: '', permissionLinkUuid: '', hidden: false, canManage: false };
+            ? { memberLinkUuid: link?.uuid, permissionLinkUuid, visible: isVisible, canManage: !isBuiltin }
+            : { memberLinkUuid: '', permissionLinkUuid: '', visible: false, canManage: false };
     }, { setMemberIsHidden }
 )(renderIsHidden);
 
     }, { setMemberIsHidden }
 )(renderIsHidden);
 
index 51107b6bba16767a25d05c4b31b1d951bbb5f19f..9f2d3f41d9c0498d46c57db09b78b9fd039a8fcd 100644 (file)
@@ -7,7 +7,7 @@ import { connect } from 'react-redux';
 
 import { DataExplorer } from "views-components/data-explorer/data-explorer";
 import { DataColumns } from 'components/data-table/data-table';
 
 import { DataExplorer } from "views-components/data-explorer/data-explorer";
 import { DataColumns } from 'components/data-table/data-table';
-import { ResourceLinkHeadUuid, ResourceLinkTailUuid, ResourceLinkTailEmail, ResourceLinkTailUsername, ResourceLinkHeadPermissionLevel, ResourceLinkTailPermissionLevel, ResourceLinkHead, ResourceLinkTail, ResourceLinkDelete, ResourceLinkTailIsActive, ResourceLinkTailIsHidden } from 'views-components/data-explorer/renderers';
+import { ResourceLinkHeadUuid, ResourceLinkTailUsername, ResourceLinkHeadPermissionLevel, ResourceLinkTailPermissionLevel, ResourceLinkHead, ResourceLinkTail, ResourceLinkDelete, ResourceLinkTailIsActive, ResourceLinkTailIsVisible } from 'views-components/data-explorer/renderers';
 import { createTree } from 'models/tree';
 import { noop } from 'lodash/fp';
 import { RootState } from 'store/store';
 import { createTree } from 'models/tree';
 import { noop } from 'lodash/fp';
 import { RootState } from 'store/store';
@@ -23,7 +23,7 @@ export enum GroupDetailsPanelMembersColumnNames {
     FULL_NAME = "Name",
     USERNAME = "Username",
     ACTIVE = "User Active",
     FULL_NAME = "Name",
     USERNAME = "Username",
     ACTIVE = "User Active",
-    HIDDEN = "Member Hidden",
+    VISIBLE = "Visible to other members",
     PERMISSION = "Permission",
     REMOVE = "Remove",
 }
     PERMISSION = "Permission",
     REMOVE = "Remove",
 }
@@ -58,11 +58,11 @@ export const groupDetailsMembersPanelColumns: DataColumns<string> = [
         render: uuid => <ResourceLinkTailIsActive uuid={uuid} />
     },
     {
         render: uuid => <ResourceLinkTailIsActive uuid={uuid} />
     },
     {
-        name: GroupDetailsPanelMembersColumnNames.HIDDEN,
+        name: GroupDetailsPanelMembersColumnNames.VISIBLE,
         selected: true,
         configurable: true,
         filters: createTree(),
         selected: true,
         configurable: true,
         filters: createTree(),
-        render: uuid => <ResourceLinkTailIsHidden uuid={uuid} />
+        render: uuid => <ResourceLinkTailIsVisible uuid={uuid} />
     },
     {
         name: GroupDetailsPanelMembersColumnNames.PERMISSION,
     },
     {
         name: GroupDetailsPanelMembersColumnNames.PERMISSION,