1 // Copyright (C) The Arvados Authors. All rights reserved.
3 // SPDX-License-Identifier: AGPL-3.0
5 import { Dispatch } from 'redux';
6 import { unionize, ofType, UnionOf } from '~/common/unionize';
7 import { extractUuidObjectType, ResourceObjectType } from '~/models/resource';
8 import { ServiceRepository } from '~/services/services';
9 import { RootState } from '../store';
11 export type OwnerNameUuidEnhancerAction = UnionOf<typeof ownerNameUuidEnhancerActions>;
13 export interface OwnerNameState {
18 export const ownerNameUuidEnhancerActions = unionize({
19 SET_OWNER_NAME_BY_UUID: ofType<OwnerNameState>()
22 export const fetchOwnerNameByUuid = (uuid: string) =>
23 (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository) => {
24 const objectType = extractUuidObjectType(uuid);
27 case ResourceObjectType.USER:
28 services.userService.get(uuid, false)
31 ownerNameUuidEnhancerActions.SET_OWNER_NAME_BY_UUID({
33 name: (data as any).fullName,
38 case ResourceObjectType.GROUP:
39 services.groupsService.get(uuid, false)
42 ownerNameUuidEnhancerActions.SET_OWNER_NAME_BY_UUID({
44 name: (data as any).name,