diff --git a/openmetadata-ui/src/main/resources/ui/cypress/e2e/Flow/Task.spec.js b/openmetadata-ui/src/main/resources/ui/cypress/e2e/Flow/Task.spec.js
index e1adc23b5a7..dc6be6391ed 100644
--- a/openmetadata-ui/src/main/resources/ui/cypress/e2e/Flow/Task.spec.js
+++ b/openmetadata-ui/src/main/resources/ui/cypress/e2e/Flow/Task.spec.js
@@ -52,6 +52,7 @@ describe('Task flow should work', () => {
verifyResponseStatusCode('@suggestApi', 200);
cy.get(`[data-testid="assignee-option-${secondAssignee}"]`)
+ .should('be.visible')
.trigger('mouseover')
.trigger('click');
@@ -94,6 +95,7 @@ describe('Task flow should work', () => {
verifyResponseStatusCode('@suggestApi', 200);
cy.get(`[data-testid="assignee-option-${assignee}"]`)
+ .should('be.visible')
.trigger('mouseover')
.trigger('click');
@@ -136,6 +138,7 @@ describe('Task flow should work', () => {
verifyResponseStatusCode('@suggestApi', 200);
cy.get(`[data-testid="assignee-option-${assignee}"]`)
+ .should('be.visible')
.trigger('mouseover')
.trigger('click');
diff --git a/openmetadata-ui/src/main/resources/ui/src/components/ActivityFeed/ActivityFeedDrawer/ActivityFeedDrawer.tsx b/openmetadata-ui/src/main/resources/ui/src/components/ActivityFeed/ActivityFeedDrawer/ActivityFeedDrawer.tsx
index 1816187e81b..3365d43dc51 100644
--- a/openmetadata-ui/src/main/resources/ui/src/components/ActivityFeed/ActivityFeedDrawer/ActivityFeedDrawer.tsx
+++ b/openmetadata-ui/src/main/resources/ui/src/components/ActivityFeed/ActivityFeedDrawer/ActivityFeedDrawer.tsx
@@ -18,7 +18,6 @@ import { ThreadType } from 'generated/api/feed/createThread';
import React, { FC } from 'react';
import { useTranslation } from 'react-i18next';
import { Thread } from '../../../generated/entity/feed/thread';
-import { getEntityField, getEntityFQN } from '../../../utils/FeedUtils';
import ActivityFeedEditor from '../ActivityFeedEditor/ActivityFeedEditor';
import FeedPanelBodyV1 from '../ActivityFeedPanel/FeedPanelBodyV1';
import FeedPanelHeader from '../ActivityFeedPanel/FeedPanelHeader';
@@ -41,10 +40,6 @@ const ActivityFeedDrawer: FC = ({
postFeed,
selectedThread,
} = useActivityFeedProvider();
- const entityField = selectedThread
- ? getEntityField(selectedThread.about)
- : '';
- const entityFQN = selectedThread ? getEntityFQN(selectedThread.about) : '';
const onSave = (message: string) => {
postFeed(message, selectedThread?.id ?? '').catch(() => {
@@ -64,8 +59,7 @@ const ActivityFeedDrawer: FC = ({
) : (
diff --git a/openmetadata-ui/src/main/resources/ui/src/components/ActivityFeed/ActivityFeedPanel/ActivityFeedPanel.interface.ts b/openmetadata-ui/src/main/resources/ui/src/components/ActivityFeed/ActivityFeedPanel/ActivityFeedPanel.interface.ts
index ef0a208e001..10d3796172d 100644
--- a/openmetadata-ui/src/main/resources/ui/src/components/ActivityFeed/ActivityFeedPanel/ActivityFeedPanel.interface.ts
+++ b/openmetadata-ui/src/main/resources/ui/src/components/ActivityFeed/ActivityFeedPanel/ActivityFeedPanel.interface.ts
@@ -33,8 +33,7 @@ export interface ActivityFeedPanelProp extends HTMLAttributes {
export interface FeedPanelHeaderProp
extends HTMLAttributes,
Pick {
- entityField: string;
- entityFQN?: string;
+ entityLink: string;
noun?: string;
threadType?: ThreadType;
onShowNewConversation?: (v: boolean) => void;
diff --git a/openmetadata-ui/src/main/resources/ui/src/components/ActivityFeed/ActivityFeedPanel/FeedPanelHeader.test.tsx b/openmetadata-ui/src/main/resources/ui/src/components/ActivityFeed/ActivityFeedPanel/FeedPanelHeader.test.tsx
index 1d4a2efae34..fc836066b72 100644
--- a/openmetadata-ui/src/main/resources/ui/src/components/ActivityFeed/ActivityFeedPanel/FeedPanelHeader.test.tsx
+++ b/openmetadata-ui/src/main/resources/ui/src/components/ActivityFeed/ActivityFeedPanel/FeedPanelHeader.test.tsx
@@ -19,9 +19,10 @@ import FeedPanelHeader from './FeedPanelHeader';
const mockFeedPanelHeaderProp = {
onCancel: jest.fn(),
- entityField: 'description',
noun: 'Conversations',
onShowNewConversation: jest.fn(),
+ entityLink:
+ '<#E::table::sample_data.ecommerce_db.shopify.dim_address::description>',
};
describe('Test FeedPanelHeader Component', () => {
@@ -85,8 +86,7 @@ describe('Test FeedPanelHeader Component', () => {
const { container } = render(
,
{
wrapper: MemoryRouter,
@@ -95,15 +95,15 @@ describe('Test FeedPanelHeader Component', () => {
const entityAttribute = await findByTestId(container, 'entity-attribute');
- expect(entityAttribute).toHaveTextContent(/x.y.z/i);
+ expect(entityAttribute).toHaveTextContent(
+ 'ecommerce_db.shopify.dim_address'
+ );
});
- it('Should render noun according to the threadtype', async () => {
+ it('Should render noun according to the thread type', async () => {
const { container } = render(
,
diff --git a/openmetadata-ui/src/main/resources/ui/src/components/ActivityFeed/ActivityFeedPanel/FeedPanelHeader.tsx b/openmetadata-ui/src/main/resources/ui/src/components/ActivityFeed/ActivityFeedPanel/FeedPanelHeader.tsx
index b8a350d6a44..81e4b3dd89b 100644
--- a/openmetadata-ui/src/main/resources/ui/src/components/ActivityFeed/ActivityFeedPanel/FeedPanelHeader.tsx
+++ b/openmetadata-ui/src/main/resources/ui/src/components/ActivityFeed/ActivityFeedPanel/FeedPanelHeader.tsx
@@ -15,23 +15,31 @@ import { PlusOutlined } from '@ant-design/icons';
import { Button, Tooltip } from 'antd';
import React, { FC } from 'react';
import { useTranslation } from 'react-i18next';
+import { Link } from 'react-router-dom';
+import { getEntityLink } from 'utils/TableUtils';
import {
+ entityDisplayName,
+ getEntityField,
getEntityFieldDisplay,
+ getEntityFQN,
+ getEntityType,
getFeedPanelHeaderText,
} from '../../../utils/FeedUtils';
import { FeedPanelHeaderProp } from './ActivityFeedPanel.interface';
const FeedPanelHeader: FC = ({
- onCancel,
- entityField,
className,
+ entityLink,
noun,
onShowNewConversation,
threadType,
- entityFQN = '',
+ onCancel,
hideCloseIcon = false,
}) => {
const { t } = useTranslation();
+ const entityType = getEntityType(entityLink);
+ const entityFQN = getEntityFQN(entityLink);
+ const entityField = getEntityField(entityLink);
return (
@@ -42,7 +50,16 @@ const FeedPanelHeader: FC = ({
{t('label.on-lowercase')}{' '}
- {entityField ? getEntityFieldDisplay(entityField) : entityFQN}
+ {entityField ? (
+ getEntityFieldDisplay(entityField)
+ ) : (
+
+ {entityDisplayName(entityType, entityFQN)}
+
+ )}
diff --git a/openmetadata-ui/src/main/resources/ui/src/components/ActivityFeed/ActivityFeedTab/ActivityFeedTab.component.tsx b/openmetadata-ui/src/main/resources/ui/src/components/ActivityFeed/ActivityFeedTab/ActivityFeedTab.component.tsx
index b83c04c0dc0..7b2dd0dc9d5 100644
--- a/openmetadata-ui/src/main/resources/ui/src/components/ActivityFeed/ActivityFeedTab/ActivityFeedTab.component.tsx
+++ b/openmetadata-ui/src/main/resources/ui/src/components/ActivityFeed/ActivityFeedTab/ActivityFeedTab.component.tsx
@@ -38,7 +38,6 @@ import { useHistory, useParams } from 'react-router-dom';
import { getAllFeeds, getFeedCount } from 'rest/feedsAPI';
import { getCountBadge, getEntityDetailLink } from 'utils/CommonUtils';
import { ENTITY_LINK_SEPARATOR, getEntityFeedLink } from 'utils/EntityUtils';
-import { getEntityField } from 'utils/FeedUtils';
import '../../Widgets/FeedsWidget/feeds-widget.less';
import ActivityFeedEditor from '../ActivityFeedEditor/ActivityFeedEditor';
import ActivityFeedListV1 from '../ActivityFeedList/ActivityFeedListV1.component';
@@ -241,10 +240,6 @@ export const ActivityFeedTab = ({
});
};
- const entityField = selectedThread
- ? getEntityField(selectedThread.about)
- : '';
-
const threads = useMemo(() => {
if (activeTab === ActivityFeedTabs.TASKS) {
return entityThread.filter(
@@ -407,8 +402,7 @@ export const ActivityFeedTab = ({
diff --git a/openmetadata-ui/src/main/resources/ui/src/components/ActivityFeed/ActivityThreadPanel/ActivityThreadPanelBody.tsx b/openmetadata-ui/src/main/resources/ui/src/components/ActivityFeed/ActivityThreadPanel/ActivityThreadPanelBody.tsx
index bf08f9e8991..2acc9f3209e 100644
--- a/openmetadata-ui/src/main/resources/ui/src/components/ActivityFeed/ActivityThreadPanel/ActivityThreadPanelBody.tsx
+++ b/openmetadata-ui/src/main/resources/ui/src/components/ActivityFeed/ActivityThreadPanel/ActivityThreadPanelBody.tsx
@@ -31,7 +31,6 @@ import {
} from '../../../generated/entity/feed/thread';
import { Paging } from '../../../generated/type/paging';
import { useElementInView } from '../../../hooks/useElementInView';
-import { getEntityField } from '../../../utils/FeedUtils';
import { showErrorToast } from '../../../utils/ToastUtils';
import ErrorPlaceHolder from '../../common/error-with-placeholder/ErrorPlaceHolder';
import Loader from '../../Loader/Loader';
@@ -139,8 +138,6 @@ const ActivityThreadPanelBody: FC
= ({
setConfirmationState(data);
};
- const entityField = getEntityField(threadLink);
-
const onShowNewConversation = (value: boolean) => {
setShowNewConversation(value);
};
@@ -239,7 +236,7 @@ const ActivityThreadPanelBody: FC = ({
{showHeader && isConversationType && (
isAdminUser || isAssignee || isOwner;
-
- const hasTaskUpdateAccess = () => hasEditAccess() || isPartOfAssigneeTeam;
+ const hasEditAccess =
+ isAdminUser || isAssignee || isOwner || Boolean(isPartOfAssigneeTeam);
const onSave = (message: string) => {
postFeed(message, taskThread?.id ?? '').catch(() => {
@@ -266,10 +265,10 @@ export const TaskTab = ({
className="m-t-sm items-end w-full"
data-testid="task-cta-buttons"
size="small">
- {(isCreator || hasTaskUpdateAccess()) && (
+ {(isCreator || hasEditAccess) && (
)}
- {hasTaskUpdateAccess() ? (
+ {hasEditAccess ? (
<>
{['RequestDescription', 'RequestTag'].includes(
taskDetails?.type ?? ''
@@ -428,7 +427,7 @@ export const TaskTab = ({
profileWidth="24"
showUserName={false}
/>
- {(isCreator || hasTaskUpdateAccess()) && !isTaskClosed ? (
+ {(isCreator || hasEditAccess) && !isTaskClosed ? (