X-Git-Url: https://git.arvados.org/arvados-workbench2.git/blobdiff_plain/f0a64666816383d2641d5fa7ea22019441ac4464..7f160d39308e02e571543b2958320f387b5372ab:/src/store/groups-panel/groups-panel-middleware-service.ts diff --git a/src/store/groups-panel/groups-panel-middleware-service.ts b/src/store/groups-panel/groups-panel-middleware-service.ts index b5ef51b7..3997e33c 100644 --- a/src/store/groups-panel/groups-panel-middleware-service.ts +++ b/src/store/groups-panel/groups-panel-middleware-service.ts @@ -3,37 +3,31 @@ // SPDX-License-Identifier: AGPL-3.0 import { Dispatch, MiddlewareAPI } from "redux"; -import { DataExplorerMiddlewareService, listResultsToDataExplorerItemsMeta, dataExplorerToListParams } 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, getSortColumn } from "~/store/data-explorer/data-explorer-reducer"; -import { GroupsPanelActions } from '~/store/groups-panel/groups-panel-actions'; -import { FilterBuilder } from '~/services/api/filter-builder'; -import { updateResources } from '~/store/resources/resources-actions'; -import { OrderBuilder, OrderDirection } from '~/services/api/order-builder'; -import { GroupResource, GroupClass } from '~/models/group'; -import { SortDirection } from '~/components/data-table/data-column'; -import { GroupsPanelColumnNames } from '~/views/groups-panel/groups-panel'; +import { DataExplorerMiddlewareService, listResultsToDataExplorerItemsMeta, dataExplorerToListParams } 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, getSortColumn } from "store/data-explorer/data-explorer-reducer"; +import { GroupsPanelActions } from 'store/groups-panel/groups-panel-actions'; +import { FilterBuilder } from 'services/api/filter-builder'; +import { updateResources } from 'store/resources/resources-actions'; +import { OrderBuilder, OrderDirection } from 'services/api/order-builder'; +import { GroupResource, GroupClass } from 'models/group'; +import { SortDirection } from 'components/data-table/data-column'; +import { GroupsPanelColumnNames } from 'views/groups-panel/groups-panel'; +import { progressIndicatorActions } from "store/progress-indicator/progress-indicator-actions"; export class GroupsPanelMiddlewareService extends DataExplorerMiddlewareService { - constructor(private services: ServiceRepository, id: string) { super(id); } - async requestItems(api: MiddlewareAPI) { - const dataExplorer = getDataExplorer(api.getState().dataExplorer, this.getId()); - if (!dataExplorer) { - api.dispatch(groupsPanelDataExplorerIsNotSet()); - } else { - try { - + api.dispatch(progressIndicatorActions.START_WORKING(this.getId())); const order = new OrderBuilder(); const sortColumn = getSortColumn(dataExplorer); if (sortColumn) { @@ -41,44 +35,33 @@ export class GroupsPanelMiddlewareService extends DataExplorerMiddlewareService sortColumn.sortDirection === SortDirection.ASC && sortColumn.name === GroupsPanelColumnNames.GROUP ? OrderDirection.ASC : OrderDirection.DESC; - order.addOrder(direction, 'name'); } - const filters = new FilterBuilder() - .addNotIn('groupClass', [GroupClass.PROJECT]) + .addEqual('group_class', GroupClass.ROLE) .addILike('name', dataExplorer.searchValue) .getFilters(); - const response = await this.services.groupsService .list({ ...dataExplorerToListParams(dataExplorer), filters, order: order.getOrder(), }); - api.dispatch(updateResources(response.items)); - api.dispatch(GroupsPanelActions.SET_ITEMS({ ...listResultsToDataExplorerItemsMeta(response), items: response.items.map(item => item.uuid), })); - const permissions = await this.services.permissionService.list({ - filters: new FilterBuilder() - .addIn('tailUuid', response.items.map(item => item.uuid)) + .addIn('head_uuid', response.items.map(item => item.uuid)) .getFilters() - }); - api.dispatch(updateResources(permissions.items)); - - } catch (e) { - api.dispatch(couldNotFetchFavoritesContents()); - + } finally { + api.dispatch(progressIndicatorActions.STOP_WORKING(this.getId())); } } } @@ -95,4 +78,3 @@ const couldNotFetchFavoritesContents = () => message: 'Could not fetch groups.', kind: SnackbarKind.ERROR }); -