X-Git-Url: https://git.arvados.org/arvados-workbench2.git/blobdiff_plain/8a6c5e3b1ac52cdd6e7e07f8349da92b31216c76..705b5cc1072bfb178195a90091e6d3dc120d193d:/src/store/group-details-panel/group-details-panel-members-middleware-service.ts diff --git a/src/store/group-details-panel/group-details-panel-members-middleware-service.ts b/src/store/group-details-panel/group-details-panel-members-middleware-service.ts index 23f0bbfd..e6f18f7f 100644 --- a/src/store/group-details-panel/group-details-panel-members-middleware-service.ts +++ b/src/store/group-details-panel/group-details-panel-members-middleware-service.ts @@ -12,6 +12,7 @@ import { FilterBuilder } from 'services/api/filter-builder'; import { updateResources } from 'store/resources/resources-actions'; import { getCurrentGroupDetailsPanelUuid, GroupMembersPanelActions } from 'store/group-details-panel/group-details-panel-actions'; import { LinkClass } from 'models/link'; +import { ResourceKind } from 'models/resource'; export class GroupDetailsPanelMembersMiddlewareService extends DataExplorerMiddlewareService { @@ -26,26 +27,41 @@ export class GroupDetailsPanelMembersMiddlewareService extends DataExplorerMiddl api.dispatch(groupsDetailsPanelDataExplorerIsNotSet()); } else { try { - const permissions = await this.services.permissionService.list({ + const groupResource = await this.services.groupsService.get(groupUuid); + api.dispatch(updateResources([groupResource])); + + const permissionsIn = await this.services.permissionService.list({ filters: new FilterBuilder() .addEqual('head_uuid', groupUuid) .addEqual('link_class', LinkClass.PERMISSION) .getFilters() }); - api.dispatch(updateResources(permissions.items)); + api.dispatch(updateResources(permissionsIn.items)); - const users = await this.services.userService.list({ + api.dispatch(GroupMembersPanelActions.SET_ITEMS({ + ...listResultsToDataExplorerItemsMeta(permissionsIn), + items: permissionsIn.items.map(item => item.uuid), + })); + + const usersIn = await this.services.userService.list({ filters: new FilterBuilder() - .addIn('uuid', permissions.items.map(item => item.tailUuid)) + .addIn('uuid', permissionsIn.items + .filter((item) => item.tailKind === ResourceKind.USER) + .map(item => item.tailUuid)) .getFilters(), count: "none" }); - api.dispatch(updateResources(users.items)); + api.dispatch(updateResources(usersIn.items)); - api.dispatch(GroupMembersPanelActions.SET_ITEMS({ - ...listResultsToDataExplorerItemsMeta(permissions), - items: permissions.items.map(item => item.uuid), - })); + const projectsIn = await this.services.projectService.list({ + filters: new FilterBuilder() + .addIn('uuid', permissionsIn.items + .filter((item) => item.tailKind === ResourceKind.PROJECT) + .map(item => item.tailUuid)) + .getFilters(), + count: "none" + }); + api.dispatch(updateResources(projectsIn.items)); } catch (e) { api.dispatch(couldNotFetchGroupDetailsContents()); } @@ -55,12 +71,12 @@ export class GroupDetailsPanelMembersMiddlewareService extends DataExplorerMiddl const groupsDetailsPanelDataExplorerIsNotSet = () => snackbarActions.OPEN_SNACKBAR({ - message: 'Group details panel is not ready.', + message: 'Group members panel is not ready.', kind: SnackbarKind.ERROR }); const couldNotFetchGroupDetailsContents = () => snackbarActions.OPEN_SNACKBAR({ - message: 'Could not fetch group details.', + message: 'Could not fetch group members.', kind: SnackbarKind.ERROR });