X-Git-Url: https://git.arvados.org/arvados-workbench2.git/blobdiff_plain/ec33904efe960ec3e3bddb668d892463171e50bd..237776fd3412409bf0a9c9f0ac538f82d4b4a8d4:/src/store/group-details-panel/group-details-panel-middleware-service.ts diff --git a/src/store/group-details-panel/group-details-panel-middleware-service.ts b/src/store/group-details-panel/group-details-panel-middleware-service.ts index bf424c54..67f72391 100644 --- a/src/store/group-details-panel/group-details-panel-middleware-service.ts +++ b/src/store/group-details-panel/group-details-panel-middleware-service.ts @@ -3,15 +3,15 @@ // SPDX-License-Identifier: AGPL-3.0 import { Dispatch, MiddlewareAPI } from "redux"; -import { DataExplorerMiddlewareService, listResultsToDataExplorerItemsMeta } from "~/store/data-explorer/data-explorer-middleware-service"; -import { RootState } from "~/store/store"; -import { ServiceRepository } from "~/services/services"; -import { snackbarActions, SnackbarKind } from '~/store/snackbar/snackbar-actions'; -import { getDataExplorer } from "~/store/data-explorer/data-explorer-reducer"; -import { FilterBuilder } from '~/services/api/filter-builder'; -import { updateResources } from '~/store/resources/resources-actions'; -import { getCurrentGroupDetailsPanelUuid, GroupDetailsPanelActions } from '~/store/group-details-panel/group-details-panel-actions'; -import { LinkClass } from '~/models/link'; +import { DataExplorerMiddlewareService, listResultsToDataExplorerItemsMeta } from "store/data-explorer/data-explorer-middleware-service"; +import { RootState } from "store/store"; +import { ServiceRepository } from "services/services"; +import { snackbarActions, SnackbarKind } from 'store/snackbar/snackbar-actions'; +import { getDataExplorer } from "store/data-explorer/data-explorer-reducer"; +import { FilterBuilder } from 'services/api/filter-builder'; +import { updateResources } from 'store/resources/resources-actions'; +import { getCurrentGroupDetailsPanelUuid, GroupMembersPanelActions, GroupPermissionsPanelActions } from 'store/group-details-panel/group-details-panel-actions'; +import { LinkClass } from 'models/link'; export class GroupDetailsPanelMiddlewareService extends DataExplorerMiddlewareService { @@ -20,48 +20,49 @@ export class GroupDetailsPanelMiddlewareService extends DataExplorerMiddlewareSe } async requestItems(api: MiddlewareAPI) { - const dataExplorer = getDataExplorer(api.getState().dataExplorer, this.getId()); const groupUuid = getCurrentGroupDetailsPanelUuid(api.getState().properties); - if (!dataExplorer || !groupUuid) { - api.dispatch(groupsDetailsPanelDataExplorerIsNotSet()); - } else { - try { - - const permissions = await this.services.permissionService.list({ - + const permissionsIn = await this.services.permissionService.list({ filters: new FilterBuilder() - .addEqual('tailUuid', groupUuid) - .addEqual('linkClass', LinkClass.PERMISSION) + .addEqual('head_uuid', groupUuid) + .addEqual('link_class', LinkClass.PERMISSION) .getFilters() - }); - - api.dispatch(updateResources(permissions.items)); - - const users = await this.services.userService.list({ - + api.dispatch(updateResources(permissionsIn.items)); + const permissionsOut = await this.services.permissionService.list({ filters: new FilterBuilder() - .addIn('uuid', permissions.items.map(item => item.headUuid)) + .addEqual('tail_uuid', groupUuid) + .addEqual('link_class', LinkClass.PERMISSION) .getFilters() - }); - - api.dispatch(GroupDetailsPanelActions.SET_ITEMS({ - ...listResultsToDataExplorerItemsMeta(permissions), + api.dispatch(updateResources(permissionsOut.items)); + const users = await this.services.userService.list({ + filters: new FilterBuilder() + .addIn('uuid', permissionsIn.items.map(item => item.tailUuid)) + .getFilters(), + count: "none" + }); + const usersOut = await this.services.userService.list({ + filters: new FilterBuilder() + .addIn('uuid', permissionsOut.items.map(item => item.tailUuid)) + .getFilters(), + count: "none" + }); + api.dispatch(GroupMembersPanelActions.SET_ITEMS({ + ...listResultsToDataExplorerItemsMeta(permissionsIn), items: users.items.map(item => item.uuid), })); - + api.dispatch(GroupPermissionsPanelActions.SET_ITEMS({ + ...listResultsToDataExplorerItemsMeta(permissionsOut), + items: usersOut.items.map(item => item.uuid), + })); api.dispatch(updateResources(users.items)); - } catch (e) { - api.dispatch(couldNotFetchGroupDetailsContents()); - } } } @@ -69,7 +70,8 @@ export class GroupDetailsPanelMiddlewareService extends DataExplorerMiddlewareSe const groupsDetailsPanelDataExplorerIsNotSet = () => snackbarActions.OPEN_SNACKBAR({ - message: 'Group details panel is not ready.' + message: 'Group details panel is not ready.', + kind: SnackbarKind.ERROR }); const couldNotFetchGroupDetailsContents = () =>