X-Git-Url: https://git.arvados.org/arvados-workbench2.git/blobdiff_plain/cfa8c66b29ba7eb4cab946ab8bb2f58ca93bc80a..ab13bb0f02c562635b95b3bdf908bd9941d149e4:/src/store/group-details-panel/group-details-panel-permissions-middleware-service.ts diff --git a/src/store/group-details-panel/group-details-panel-permissions-middleware-service.ts b/src/store/group-details-panel/group-details-panel-permissions-middleware-service.ts index 91bff1e9..85beecd7 100644 --- a/src/store/group-details-panel/group-details-panel-permissions-middleware-service.ts +++ b/src/store/group-details-panel/group-details-panel-permissions-middleware-service.ts @@ -12,6 +12,7 @@ import { FilterBuilder } from 'services/api/filter-builder'; import { updateResources } from 'store/resources/resources-actions'; import { getCurrentGroupDetailsPanelUuid, GroupPermissionsPanelActions } from 'store/group-details-panel/group-details-panel-actions'; import { LinkClass } from 'models/link'; +import { ResourceKind } from 'models/resource'; export class GroupDetailsPanelPermissionsMiddlewareService extends DataExplorerMiddlewareService { @@ -23,45 +24,51 @@ export class GroupDetailsPanelPermissionsMiddlewareService extends DataExplorerM const dataExplorer = getDataExplorer(api.getState().dataExplorer, this.getId()); const groupUuid = getCurrentGroupDetailsPanelUuid(api.getState().properties); if (!dataExplorer || !groupUuid) { - api.dispatch(groupsDetailsPanelDataExplorerIsNotSet()); + // No-op if data explorer is not set since refresh may be triggered from elsewhere } else { try { - const permissions = await this.services.permissionService.list({ + const permissionsOut = await this.services.permissionService.list({ filters: new FilterBuilder() .addEqual('tail_uuid', groupUuid) .addEqual('link_class', LinkClass.PERMISSION) .getFilters() }); - api.dispatch(updateResources(permissions.items)); + api.dispatch(updateResources(permissionsOut.items)); - const users = await this.services.userService.list({ + api.dispatch(GroupPermissionsPanelActions.SET_ITEMS({ + ...listResultsToDataExplorerItemsMeta(permissionsOut), + items: permissionsOut.items.map(item => item.uuid), + })); + + const usersOut = await this.services.userService.list({ filters: new FilterBuilder() - .addIn('uuid', permissions.items.map(item => item.headUuid)) + .addIn('uuid', permissionsOut.items + .filter((item) => item.headKind === ResourceKind.USER) + .map(item => item.headUuid)) .getFilters(), count: "none" }); - api.dispatch(updateResources(users.items)); + api.dispatch(updateResources(usersOut.items)); - const collections = await this.services.collectionService.list({ + const collectionsOut = await this.services.collectionService.list({ filters: new FilterBuilder() - .addIn('uuid', permissions.items.map(item => item.headUuid)) + .addIn('uuid', permissionsOut.items + .filter((item) => item.headKind === ResourceKind.COLLECTION) + .map(item => item.headUuid)) .getFilters(), count: "none" }); - api.dispatch(updateResources(collections.items)); + api.dispatch(updateResources(collectionsOut.items)); - const projects = await this.services.projectService.list({ + const projectsOut = await this.services.projectService.list({ filters: new FilterBuilder() - .addIn('uuid', permissions.items.map(item => item.headUuid)) + .addIn('uuid', permissionsOut.items + .filter((item) => item.headKind === ResourceKind.PROJECT) + .map(item => item.headUuid)) .getFilters(), count: "none" }); - api.dispatch(updateResources(projects.items)); - - api.dispatch(GroupPermissionsPanelActions.SET_ITEMS({ - ...listResultsToDataExplorerItemsMeta(permissions), - items: permissions.items.map(item => item.uuid), - })); + api.dispatch(updateResources(projectsOut.items)); } catch (e) { api.dispatch(couldNotFetchGroupDetailsContents()); } @@ -69,12 +76,6 @@ export class GroupDetailsPanelPermissionsMiddlewareService extends DataExplorerM } } -const groupsDetailsPanelDataExplorerIsNotSet = () => - snackbarActions.OPEN_SNACKBAR({ - message: 'Group permissions panel is not ready.', - kind: SnackbarKind.ERROR - }); - const couldNotFetchGroupDetailsContents = () => snackbarActions.OPEN_SNACKBAR({ message: 'Could not fetch group permissions.',