mirror of
https://github.com/open-metadata/OpenMetadata.git
synced 2025-10-27 00:31:42 +00:00
* supported pending services in assets * localization key change * added storage service * sonar fixes * fix broken paths --------- Co-authored-by: 07Himank <112613760+07Himank@users.noreply.github.com>
112 lines
3.2 KiB
TypeScript
112 lines
3.2 KiB
TypeScript
/*
|
|
* Copyright 2023 Collate.
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
import { isEmpty } from 'lodash';
|
|
import React, { ReactNode } from 'react';
|
|
import { Link } from 'react-router-dom';
|
|
import ProfilePicture from '../components/common/ProfilePicture/ProfilePicture';
|
|
import {
|
|
getTeamAndUserDetailsPath,
|
|
getUserPath,
|
|
NO_DATA_PLACEHOLDER,
|
|
} from '../constants/constants';
|
|
import { EntityField } from '../constants/Feeds.constants';
|
|
import { DataProduct } from '../generated/entity/domains/dataProduct';
|
|
import { Domain } from '../generated/entity/domains/domain';
|
|
import { ChangeDescription, EntityReference } from '../generated/entity/type';
|
|
import { getEntityName } from './EntityUtils';
|
|
import {
|
|
getChangedEntityNewValue,
|
|
getChangedEntityOldValue,
|
|
getDiffByFieldName,
|
|
getDiffValue,
|
|
} from './EntityVersionUtils';
|
|
|
|
export const getOwner = (
|
|
hasPermission: boolean,
|
|
ownerDisplayName: ReactNode,
|
|
owner?: EntityReference
|
|
) => {
|
|
if (owner) {
|
|
return (
|
|
<>
|
|
<ProfilePicture
|
|
displayName={getEntityName(owner)}
|
|
id={owner?.id || ''}
|
|
name={owner?.name ?? ''}
|
|
textClass="text-xs"
|
|
width="20"
|
|
/>
|
|
<Link
|
|
to={
|
|
owner.type === 'team'
|
|
? getTeamAndUserDetailsPath(owner.name ?? '')
|
|
: getUserPath(owner.name ?? '')
|
|
}>
|
|
{ownerDisplayName}
|
|
</Link>
|
|
</>
|
|
);
|
|
}
|
|
if (!hasPermission) {
|
|
return <div>{NO_DATA_PLACEHOLDER}</div>;
|
|
}
|
|
|
|
return null;
|
|
};
|
|
|
|
export const getUserNames = (
|
|
entity: Domain | DataProduct,
|
|
hasPermission: boolean,
|
|
isVersionsView = false
|
|
) => {
|
|
if (isVersionsView) {
|
|
const ownerDiff = getDiffByFieldName(
|
|
EntityField.OWNER,
|
|
entity.changeDescription as ChangeDescription
|
|
);
|
|
|
|
const oldOwner = JSON.parse(getChangedEntityOldValue(ownerDiff) ?? '{}');
|
|
const newOwner = JSON.parse(getChangedEntityNewValue(ownerDiff) ?? '{}');
|
|
|
|
const shouldShowDiff =
|
|
!isEmpty(ownerDiff.added) ||
|
|
!isEmpty(ownerDiff.deleted) ||
|
|
!isEmpty(ownerDiff.updated);
|
|
|
|
if (shouldShowDiff) {
|
|
if (!isEmpty(ownerDiff.added)) {
|
|
const ownerName = getDiffValue('', getEntityName(newOwner));
|
|
|
|
return getOwner(hasPermission, ownerName, newOwner);
|
|
}
|
|
|
|
if (!isEmpty(ownerDiff.deleted)) {
|
|
const ownerName = getDiffValue(getEntityName(oldOwner), '');
|
|
|
|
return getOwner(hasPermission, ownerName, oldOwner);
|
|
}
|
|
|
|
if (!isEmpty(ownerDiff.updated)) {
|
|
const ownerName = getDiffValue(
|
|
getEntityName(oldOwner),
|
|
getEntityName(newOwner)
|
|
);
|
|
|
|
return getOwner(hasPermission, ownerName, newOwner);
|
|
}
|
|
}
|
|
}
|
|
|
|
return getOwner(hasPermission, getEntityName(entity.owner), entity.owner);
|
|
};
|