Ashish Gupta 11b034231a
fix(ui): supported pending services in assets (#13372)
* 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>
2023-10-05 19:20:59 +05:30

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);
};