X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/59995a3eed71636c7b3be3729a41d8a90ee2486c..24e864bc823b27ac27c39e9e5879987924330007:/src/store/collections-content-address-panel/collections-content-address-middleware-service.ts diff --git a/src/store/collections-content-address-panel/collections-content-address-middleware-service.ts b/src/store/collections-content-address-panel/collections-content-address-middleware-service.ts index c1893f6da1..642e7b8266 100644 --- a/src/store/collections-content-address-panel/collections-content-address-middleware-service.ts +++ b/src/store/collections-content-address-panel/collections-content-address-middleware-service.ts @@ -18,6 +18,11 @@ import { GroupContentsResource, GroupContentsResourcePrefix } from '~/services/g import { progressIndicatorActions } from '~/store/progress-indicator/progress-indicator-actions'; import { collectionsContentAddressActions } from './collections-content-address-panel-actions'; import { navigateTo } from '~/store/navigation/navigation-action'; +import { updateFavorites } from '~/store/favorites/favorites-actions'; +import { updatePublicFavorites } from '~/store/public-favorites/public-favorites-actions'; +import { setBreadcrumbs } from '../breadcrumbs/breadcrumbs-actions'; +import { ResourceKind, extractUuidKind } from '~/models/resource'; +import { ownerNameActions } from '~/store/owner-name/owner-name-actions'; export class CollectionsWithSameContentAddressMiddlewareService extends DataExplorerMiddlewareService { constructor(private services: ServiceRepository, id: string) { @@ -43,6 +48,7 @@ export class CollectionsWithSameContentAddressMiddlewareService extends DataExpl } try { api.dispatch(progressIndicatorActions.START_WORKING(this.getId())); + const userUuid = api.getState().auth.user!.uuid; const pathname = api.getState().router.location!.pathname; const contentAddress = pathname.split('/')[2]; const response = await this.services.collectionService.list({ @@ -50,8 +56,47 @@ export class CollectionsWithSameContentAddressMiddlewareService extends DataExpl offset: dataExplorer.page * dataExplorer.rowsPerPage, filters: new FilterBuilder() .addEqual('portableDataHash', contentAddress) + .addILike("name", dataExplorer.searchValue) .getFilters() }); + const userUuids = response.items.map(it => { + if (extractUuidKind(it.ownerUuid) === ResourceKind.USER) { + return it.ownerUuid; + } else { + return ''; + } + } + ); + const groupUuids = response.items.map(it => { + if (extractUuidKind(it.ownerUuid) === ResourceKind.GROUP) { + return it.ownerUuid; + } else { + return ''; + } + }); + const responseUsers = await this.services.userService.list({ + limit: dataExplorer.rowsPerPage, + offset: dataExplorer.page * dataExplorer.rowsPerPage, + filters: new FilterBuilder() + .addIn('uuid', userUuids) + .getFilters() + }); + const responseGroups = await this.services.groupsService.list({ + limit: dataExplorer.rowsPerPage, + offset: dataExplorer.page * dataExplorer.rowsPerPage, + filters: new FilterBuilder() + .addIn('uuid', groupUuids) + .getFilters() + }); + responseUsers.items.map(it=>{ + api.dispatch(ownerNameActions.SET_OWNER_NAME({name: it.uuid === userUuid ? 'User: Me' : `User: ${it.firstName} ${it.lastName}`, uuid: it.uuid})); + }); + responseGroups.items.map(it=>{ + api.dispatch(ownerNameActions.SET_OWNER_NAME({name: `Project: ${it.name}`, uuid: it.uuid})); + }); + api.dispatch(setBreadcrumbs([{ label: 'Projects', uuid: userUuid }])); + api.dispatch(updateFavorites(response.items.map(item => item.uuid))); + api.dispatch(updatePublicFavorites(response.items.map(item => item.uuid))); if (response.itemsAvailable === 1) { api.dispatch(navigateTo(response.items[0].uuid)); api.dispatch(progressIndicatorActions.PERSIST_STOP_WORKING(this.getId()));