+// Copyright (C) The Arvados Authors. All rights reserved.
+//
+// SPDX-License-Identifier: AGPL-3.0
+
+import * as React from 'react';
+import { Dispatch } from 'redux';
+import { RootState } from '~/store/store';
+import { connect } from 'react-redux';
+import { fetchOwnerNameByUuid } from '~/store/owner-name-uuid-enhancer/owner-name-uuid-enhancer-actions';
+
+export interface OwnerNameUuidEnhancerOwnProps {
+ uuid: string;
+}
+
+export interface OwnerNameUuidEnhancerRootDataProps {
+ ownerNamesMap: any;
+}
+
+export interface OwnerNameUuidEnhancerDispatchProps {
+ fetchOwner: Function;
+}
+
+export type OwnerNameUuidEnhancerProps = OwnerNameUuidEnhancerOwnProps & OwnerNameUuidEnhancerRootDataProps & OwnerNameUuidEnhancerDispatchProps;
+
+export const OwnerNameUuidEnhancer = ({ uuid, ownerNamesMap, fetchOwner }: OwnerNameUuidEnhancerProps) => {
+ React.useEffect(() => {
+ if (!ownerNamesMap[uuid]) {
+ fetchOwner(uuid);
+ }
+ }, [uuid, ownerNamesMap, fetchOwner]);
+
+ return <span>{uuid}{ownerNamesMap[uuid] ? ` (${ownerNamesMap[uuid]})` : ''}</span>;
+};
+
+const mapStateToProps = (state: RootState): OwnerNameUuidEnhancerRootDataProps => {
+ return {
+ ownerNamesMap: state.ownerNameUuidEnhancer,
+ };
+};
+
+const mapDispatchToProps = (dispatch: Dispatch): OwnerNameUuidEnhancerDispatchProps => ({
+ fetchOwner: (uuid: string) => dispatch<any>(fetchOwnerNameByUuid(uuid))
+});
+
+export default connect<OwnerNameUuidEnhancerRootDataProps, OwnerNameUuidEnhancerDispatchProps, OwnerNameUuidEnhancerOwnProps>(mapStateToProps, mapDispatchToProps)
+ (OwnerNameUuidEnhancer);