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 24844e23807..430c68d72a0 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 @@ -61,6 +61,7 @@ export const ActivityFeedTab = ({ description, columns, entityType, + onUpdateEntityDetails, }: ActivityFeedTabProps) => { const history = useHistory(); const { t } = useTranslation(); @@ -395,6 +396,7 @@ export const ActivityFeedTab = ({ owner={owner} tags={tags} task={selectedThread} + onUpdateEntityDetails={onUpdateEntityDetails} /> ) : ( )} diff --git a/openmetadata-ui/src/main/resources/ui/src/components/ActivityFeed/ActivityFeedTab/ActivityFeedTab.interface.ts b/openmetadata-ui/src/main/resources/ui/src/components/ActivityFeed/ActivityFeedTab/ActivityFeedTab.interface.ts index c299a076f05..67f918c2471 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/ActivityFeed/ActivityFeedTab/ActivityFeedTab.interface.ts +++ b/openmetadata-ui/src/main/resources/ui/src/components/ActivityFeed/ActivityFeedTab/ActivityFeedTab.interface.ts @@ -26,6 +26,7 @@ export enum ActivityFeedTabs { export interface ActivityFeedTabBasicProps { fqn: string; onFeedUpdate: () => void; + onUpdateEntityDetails?: () => void; owner?: EntityReference; tags?: TagLabel[]; description?: string; diff --git a/openmetadata-ui/src/main/resources/ui/src/components/DashboardDetails/DashboardDetails.component.tsx b/openmetadata-ui/src/main/resources/ui/src/components/DashboardDetails/DashboardDetails.component.tsx index 2b7ef544489..7f90f348a4e 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/DashboardDetails/DashboardDetails.component.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/components/DashboardDetails/DashboardDetails.component.tsx @@ -34,6 +34,7 @@ import { import { getDashboardDetailsPath } from 'constants/constants'; import { compare } from 'fast-json-patch'; import { TagSource } from 'generated/type/schema'; +import { EntityFieldThreadCount } from 'interface/feed.interface'; import { isEmpty, isUndefined, map } from 'lodash'; import { EntityTags, TagOption } from 'Models'; import React, { useCallback, useEffect, useMemo, useState } from 'react'; @@ -52,7 +53,11 @@ import { EntityTabs, EntityType } from '../../enums/entity.enum'; import { Dashboard } from '../../generated/entity/data/dashboard'; import { ThreadType } from '../../generated/entity/feed/thread'; import { LabelType, State, TagLabel } from '../../generated/type/tagLabel'; -import { getCurrentUserId, refreshPage } from '../../utils/CommonUtils'; +import { + getCurrentUserId, + getFeedCounts, + refreshPage, +} from '../../utils/CommonUtils'; import { getEntityFieldThreadCounts } from '../../utils/FeedUtils'; import { DEFAULT_ENTITY_PERMISSION } from '../../utils/PermissionsUtils'; import { getTagsWithoutTier, getTierTags } from '../../utils/TableUtils'; @@ -79,10 +84,7 @@ const DashboardDetails = ({ chartDescriptionUpdateHandler, chartTagUpdateHandler, versionHandler, - feedCount, - entityFieldThreadCount, createThread, - entityFieldTaskCount, onDashboardUpdate, }: DashboardDetailsProps) => { const { t } = useTranslation(); @@ -96,6 +98,13 @@ const DashboardDetails = ({ chart: ChartType; index: number; }>(); + const [feedCount, setFeedCount] = useState(0); + const [entityFieldThreadCount, setEntityFieldThreadCount] = useState< + EntityFieldThreadCount[] + >([]); + const [entityFieldTaskCount, setEntityFieldTaskCount] = useState< + EntityFieldThreadCount[] + >([]); const [tagFetchFailed, setTagFetchFailed] = useState(false); const [isTagLoading, setIsTagLoading] = useState(false); @@ -182,6 +191,20 @@ const DashboardDetails = ({ } }, []); + const getEntityFeedCount = () => { + getFeedCounts( + EntityType.DASHBOARD, + dashboardFQN, + setEntityFieldThreadCount, + setEntityFieldTaskCount, + setFeedCount + ); + }; + + useEffect(() => { + getEntityFeedCount(); + }, [dashboardFQN]); + const getAllChartsPermissions = useCallback( async (charts: ChartType[]) => { const permissionsArray: Array = []; @@ -690,7 +713,7 @@ const DashboardDetails = ({ Promise.resolve()} + onFeedUpdate={getEntityFeedCount} /> ), diff --git a/openmetadata-ui/src/main/resources/ui/src/components/DashboardDetails/DashboardDetails.interface.ts b/openmetadata-ui/src/main/resources/ui/src/components/DashboardDetails/DashboardDetails.interface.ts index 9ce9228a4b6..05be62cf3d4 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/DashboardDetails/DashboardDetails.interface.ts +++ b/openmetadata-ui/src/main/resources/ui/src/components/DashboardDetails/DashboardDetails.interface.ts @@ -16,7 +16,6 @@ import { Operation } from 'fast-json-patch'; import { CreateThread } from '../../generated/api/feed/createThread'; import { Chart } from '../../generated/entity/data/chart'; import { Dashboard } from '../../generated/entity/data/dashboard'; -import { EntityFieldThreadCount } from '../../interface/feed.interface'; export interface ChartType extends Chart { displayName: string; @@ -29,9 +28,6 @@ export interface ChartsPermissions { export interface DashboardDetailsProps { charts: Array; dashboardDetails: Dashboard; - feedCount: number; - entityFieldThreadCount: EntityFieldThreadCount[]; - entityFieldTaskCount: EntityFieldThreadCount[]; createThread: (data: CreateThread) => void; followDashboardHandler: () => Promise; unFollowDashboardHandler: () => Promise; diff --git a/openmetadata-ui/src/main/resources/ui/src/components/DashboardDetails/DashboardDetails.test.tsx b/openmetadata-ui/src/main/resources/ui/src/components/DashboardDetails/DashboardDetails.test.tsx index 0a734efa37b..ed50c1d3d62 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/DashboardDetails/DashboardDetails.test.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/components/DashboardDetails/DashboardDetails.test.tsx @@ -65,9 +65,6 @@ const dashboardDetailsProps: DashboardDetailsProps = { chartTagUpdateHandler: jest.fn(), onDashboardUpdate: jest.fn(), versionHandler: jest.fn(), - feedCount: 0, - entityFieldThreadCount: [], - entityFieldTaskCount: [], createThread: jest.fn(), }; diff --git a/openmetadata-ui/src/main/resources/ui/src/components/DataModels/DataModelDetails.component.tsx b/openmetadata-ui/src/main/resources/ui/src/components/DataModels/DataModelDetails.component.tsx index b9756f57e32..49551b94b84 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/DataModels/DataModelDetails.component.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/components/DataModels/DataModelDetails.component.tsx @@ -30,11 +30,13 @@ import { EntityField } from 'constants/Feeds.constants'; import { CSMode } from 'enums/codemirror.enum'; import { EntityTabs, EntityType } from 'enums/entity.enum'; import { LabelType, State, TagLabel, TagSource } from 'generated/type/tagLabel'; -import { isUndefined, toString } from 'lodash'; +import { EntityFieldThreadCount } from 'interface/feed.interface'; +import { isUndefined, noop, toString } from 'lodash'; import { EntityTags } from 'Models'; -import React, { useMemo, useState } from 'react'; +import React, { useEffect, useMemo, useState } from 'react'; import { useTranslation } from 'react-i18next'; import { useHistory, useParams } from 'react-router-dom'; +import { getFeedCounts } from 'utils/CommonUtils'; import { getEntityName, getEntityThreadLink } from 'utils/EntityUtils'; import { getEntityFieldThreadCounts } from 'utils/FeedUtils'; import { getTagsWithoutTier } from 'utils/TableUtils'; @@ -42,8 +44,6 @@ import { DataModelDetailsProps } from './DataModelDetails.interface'; import ModelTab from './ModelTab/ModelTab.component'; const DataModelDetails = ({ - entityFieldThreadCount, - feedCount, dataModelData, dataModelPermissions, createThread, @@ -63,6 +63,10 @@ const DataModelDetails = ({ const [isEditDescription, setIsEditDescription] = useState(false); const [threadLink, setThreadLink] = useState(''); + const [feedCount, setFeedCount] = useState(0); + const [entityFieldThreadCount, setEntityFieldThreadCount] = useState< + EntityFieldThreadCount[] + >([]); const { hasEditDescriptionPermission, @@ -91,6 +95,20 @@ const DataModelDetails = ({ }; }, [dataModelData]); + const getEntityFeedCount = () => { + getFeedCounts( + EntityType.DASHBOARD_DATA_MODEL, + dashboardDataModelFQN, + setEntityFieldThreadCount, + noop, + setFeedCount + ); + }; + + useEffect(() => { + dashboardDataModelFQN && getEntityFeedCount(); + }, [dashboardDataModelFQN]); + const handleUpdateDisplayName = async (data: EntityName) => { if (isUndefined(dataModelData)) { return; @@ -247,7 +265,7 @@ const DataModelDetails = ({ Promise.resolve()} + onFeedUpdate={getEntityFeedCount} /> ), diff --git a/openmetadata-ui/src/main/resources/ui/src/components/DataModels/DataModelDetails.interface.tsx b/openmetadata-ui/src/main/resources/ui/src/components/DataModels/DataModelDetails.interface.tsx index 7ce1ac139c1..94b22ac03fa 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/DataModels/DataModelDetails.interface.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/components/DataModels/DataModelDetails.interface.tsx @@ -16,12 +16,9 @@ import { CreateThread } from 'generated/api/feed/createThread'; import { DashboardDataModel } from 'generated/entity/data/dashboardDataModel'; import { Column } from 'generated/entity/data/table'; import { EntityReference } from 'generated/entity/type'; -import { EntityFieldThreadCount } from 'interface/feed.interface'; import { EntityTags } from 'Models'; export interface DataModelDetailsProps { - entityFieldThreadCount: EntityFieldThreadCount[]; - feedCount: number; dataModelData: DashboardDataModel; dataModelPermissions: OperationPermission; createThread: (data: CreateThread) => void; diff --git a/openmetadata-ui/src/main/resources/ui/src/components/MlModelDetail/MlModelDetail.component.tsx b/openmetadata-ui/src/main/resources/ui/src/components/MlModelDetail/MlModelDetail.component.tsx index abdd28105ee..0f806dfe59d 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/MlModelDetail/MlModelDetail.component.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/components/MlModelDetail/MlModelDetail.component.tsx @@ -25,6 +25,7 @@ import { EntityName } from 'components/Modals/EntityNameModal/EntityNameModal.in import TabsLabel from 'components/TabsLabel/TabsLabel.component'; import TagsContainerV1 from 'components/Tag/TagsContainerV1/TagsContainerV1'; import { TagLabel, TagSource } from 'generated/type/schema'; +import { EntityFieldThreadCount } from 'interface/feed.interface'; import { isEmpty } from 'lodash'; import { EntityTags } from 'Models'; import React, { FC, useCallback, useEffect, useMemo, useState } from 'react'; @@ -40,7 +41,11 @@ import { MlHyperParameter } from '../../generated/api/data/createMlModel'; import { Mlmodel, MlStore } from '../../generated/entity/data/mlmodel'; import { ThreadType } from '../../generated/entity/feed/thread'; import { LabelType, State } from '../../generated/type/tagLabel'; -import { getEmptyPlaceholder, refreshPage } from '../../utils/CommonUtils'; +import { + getEmptyPlaceholder, + getFeedCounts, + refreshPage, +} from '../../utils/CommonUtils'; import { getEntityFieldThreadCounts } from '../../utils/FeedUtils'; import { DEFAULT_ENTITY_PERMISSION } from '../../utils/PermissionsUtils'; import { getTagsWithoutTier, getTierTags } from '../../utils/TableUtils'; @@ -62,10 +67,8 @@ const MlModelDetail: FC = ({ settingsUpdateHandler, updateMlModelFeatures, onExtensionUpdate, - feedCount, + createThread, - entityFieldTaskCount, - entityFieldThreadCount, versionHandler, tagUpdateHandler, }) => { @@ -76,6 +79,13 @@ const MlModelDetail: FC = ({ useParams<{ tab: EntityTabs; mlModelFqn: string }>(); const [isEdit, setIsEdit] = useState(false); + const [feedCount, setFeedCount] = useState(0); + const [entityFieldThreadCount, setEntityFieldThreadCount] = useState< + EntityFieldThreadCount[] + >([]); + const [entityFieldTaskCount, setEntityFieldTaskCount] = useState< + EntityFieldThreadCount[] + >([]); const [mlModelPermissions, setPipelinePermissions] = useState( DEFAULT_ENTITY_PERMISSION @@ -127,6 +137,22 @@ const MlModelDetail: FC = ({ }; }, [mlModelDetail]); + const fetchEntityFeedCount = () => { + getFeedCounts( + EntityType.MLMODEL, + mlModelFqn, + setEntityFieldThreadCount, + setEntityFieldTaskCount, + setFeedCount + ); + }; + + useEffect(() => { + if (mlModelPermissions.ViewAll || mlModelPermissions.ViewBasic) { + fetchEntityFeedCount(); + } + }, [mlModelPermissions, mlModelFqn]); + const handleTabChange = (activeKey: string) => { if (activeKey !== activeTab) { history.push(getMlModelDetailsPath(mlModelFqn, activeKey)); @@ -442,7 +468,7 @@ const MlModelDetail: FC = ({ Promise.resolve()} + onFeedUpdate={fetchEntityFeedCount} /> ), diff --git a/openmetadata-ui/src/main/resources/ui/src/components/MlModelDetail/MlModelDetail.interface.ts b/openmetadata-ui/src/main/resources/ui/src/components/MlModelDetail/MlModelDetail.interface.ts index fda74efc23b..3a725eb7a43 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/MlModelDetail/MlModelDetail.interface.ts +++ b/openmetadata-ui/src/main/resources/ui/src/components/MlModelDetail/MlModelDetail.interface.ts @@ -14,12 +14,10 @@ import { HTMLAttributes } from 'react'; import { CreateThread } from '../../generated/api/feed/createThread'; import { Mlmodel } from '../../generated/entity/data/mlmodel'; -import { EntityFieldThreadCount } from '../../interface/feed.interface'; export interface MlModelDetailProp extends HTMLAttributes { mlModelDetail: Mlmodel; version?: string; - feedCount: number; followMlModelHandler: () => Promise; unFollowMlModelHandler: () => Promise; descriptionUpdateHandler: (updatedMlModel: Mlmodel) => Promise; @@ -28,7 +26,5 @@ export interface MlModelDetailProp extends HTMLAttributes { settingsUpdateHandler: (updatedMlModel: Mlmodel) => Promise; versionHandler: () => void; onExtensionUpdate: (updatedMlModel: Mlmodel) => Promise; - entityFieldThreadCount: EntityFieldThreadCount[]; - entityFieldTaskCount: EntityFieldThreadCount[]; createThread: (data: CreateThread) => void; } diff --git a/openmetadata-ui/src/main/resources/ui/src/components/PipelineDetails/PipelineDetails.component.tsx b/openmetadata-ui/src/main/resources/ui/src/components/PipelineDetails/PipelineDetails.component.tsx index b9e271e1c30..591d666f898 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/PipelineDetails/PipelineDetails.component.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/components/PipelineDetails/PipelineDetails.component.tsx @@ -700,7 +700,7 @@ const PipelineDetails = ({ Promise.resolve()} + onFeedUpdate={getEntityFeedCount} /> ), diff --git a/openmetadata-ui/src/main/resources/ui/src/components/Task/TaskTab/TaskTab.component.tsx b/openmetadata-ui/src/main/resources/ui/src/components/Task/TaskTab/TaskTab.component.tsx index 7ba31bc9e43..efac3cb6b81 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/Task/TaskTab/TaskTab.component.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/components/Task/TaskTab/TaskTab.component.tsx @@ -158,6 +158,7 @@ export const TaskTab = ({ updateTask(TaskOperation.RESOLVE, taskDetails?.id + '', data) .then(() => { showSuccessToast(t('server.task-resolved-successfully')); + rest.onUpdateEntityDetails?.(); history.push(getEntityLink(entityType ?? '', entityFQN ?? '')); }) .catch((err: AxiosError) => showErrorToast(err)); diff --git a/openmetadata-ui/src/main/resources/ui/src/components/Task/TaskTab/TaskTab.interface.ts b/openmetadata-ui/src/main/resources/ui/src/components/Task/TaskTab/TaskTab.interface.ts index 44cfac07f6f..de784903b57 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/Task/TaskTab/TaskTab.interface.ts +++ b/openmetadata-ui/src/main/resources/ui/src/components/Task/TaskTab/TaskTab.interface.ts @@ -20,6 +20,7 @@ export type TaskTabProps = { task: Thread; owner?: EntityReference; tags?: TagLabel[]; + onUpdateEntityDetails?: () => void; description?: string; } & ( | TableTaskTabProps diff --git a/openmetadata-ui/src/main/resources/ui/src/components/Team/TeamDetails/TeamDetailsV1.tsx b/openmetadata-ui/src/main/resources/ui/src/components/Team/TeamDetails/TeamDetailsV1.tsx index 743b7825b3d..cfb166ed338 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/Team/TeamDetails/TeamDetailsV1.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/components/Team/TeamDetails/TeamDetailsV1.tsx @@ -1077,7 +1077,7 @@ const TeamDetailsV1 = ({ onChange={updateActiveTab} /> - + {currentTab === TeamsPageTab.TEAMS && (currentTeam.childrenCount === 0 && !searchTerm ? ( fetchErrorPlaceHolder({ @@ -1113,6 +1113,7 @@ const TeamDetailsV1 = ({ {t('label.deleted')} + = ({ followTopicHandler, unFollowTopicHandler, versionHandler, - feedCount, - entityFieldThreadCount, createThread, - entityFieldTaskCount, + onTopicUpdate, }: TopicDetailsProps) => { const { t } = useTranslation(); @@ -73,6 +76,13 @@ const TopicDetails: React.FC = ({ const history = useHistory(); const [isEdit, setIsEdit] = useState(false); const [threadLink, setThreadLink] = useState(''); + const [feedCount, setFeedCount] = useState(0); + const [entityFieldThreadCount, setEntityFieldThreadCount] = useState< + EntityFieldThreadCount[] + >([]); + const [entityFieldTaskCount, setEntityFieldTaskCount] = useState< + EntityFieldThreadCount[] + >([]); const [threadType, setThreadType] = useState( ThreadType.Conversation @@ -261,6 +271,22 @@ const TopicDetails: React.FC = ({ } }; + const getEntityFeedCount = () => { + getFeedCounts( + EntityType.TOPIC, + topicFQN, + setEntityFieldThreadCount, + setEntityFieldTaskCount, + setFeedCount + ); + }; + + useEffect(() => { + if (topicPermissions.ViewAll || topicPermissions.ViewBasic) { + getEntityFeedCount(); + } + }, [topicPermissions, topicFQN]); + const tabs = useMemo( () => [ { @@ -355,7 +381,7 @@ const TopicDetails: React.FC = ({ Promise.resolve()} + onFeedUpdate={getEntityFeedCount} /> ), diff --git a/openmetadata-ui/src/main/resources/ui/src/components/TopicDetails/TopicDetails.interface.ts b/openmetadata-ui/src/main/resources/ui/src/components/TopicDetails/TopicDetails.interface.ts index 60231c14242..f1e389c2327 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/TopicDetails/TopicDetails.interface.ts +++ b/openmetadata-ui/src/main/resources/ui/src/components/TopicDetails/TopicDetails.interface.ts @@ -14,13 +14,9 @@ import { CreateThread } from '../../generated/api/feed/createThread'; import { CleanupPolicy, Topic } from '../../generated/entity/data/topic'; import { SchemaType } from '../../generated/type/schema'; -import { EntityFieldThreadCount } from '../../interface/feed.interface'; export interface TopicDetailsProps { topicDetails: Topic; - feedCount: number; - entityFieldThreadCount: EntityFieldThreadCount[]; - entityFieldTaskCount: EntityFieldThreadCount[]; createThread: (data: CreateThread) => void; followTopicHandler: () => Promise; unFollowTopicHandler: () => Promise; diff --git a/openmetadata-ui/src/main/resources/ui/src/components/TopicDetails/TopicDetails.test.tsx b/openmetadata-ui/src/main/resources/ui/src/components/TopicDetails/TopicDetails.test.tsx index 7d693ce957d..65714b0396f 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/TopicDetails/TopicDetails.test.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/components/TopicDetails/TopicDetails.test.tsx @@ -54,9 +54,6 @@ const topicDetailsProps: TopicDetailsProps = { unFollowTopicHandler: jest.fn(), onTopicUpdate: jest.fn(), versionHandler: jest.fn(), - feedCount: 0, - entityFieldThreadCount: [], - entityFieldTaskCount: [], createThread: jest.fn(), }; diff --git a/openmetadata-ui/src/main/resources/ui/src/components/Users/Users.component.tsx b/openmetadata-ui/src/main/resources/ui/src/components/Users/Users.component.tsx index d7ec9995412..10aadc0ce06 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/Users/Users.component.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/components/Users/Users.component.tsx @@ -25,7 +25,7 @@ import { SearchedDataProps } from 'components/searched-data/SearchedData.interfa import TabsLabel from 'components/TabsLabel/TabsLabel.component'; import TeamsSelectable from 'components/TeamsSelectable/TeamsSelectable'; import { EntityType } from 'enums/entity.enum'; -import { isEmpty, toLower } from 'lodash'; +import { isEmpty, noop, toLower } from 'lodash'; import { observer } from 'mobx-react'; import React, { Fragment, @@ -729,7 +729,7 @@ const Users = ({ Promise.resolve()} + onFeedUpdate={noop} /> ); diff --git a/openmetadata-ui/src/main/resources/ui/src/pages/ContainerPage/ContainerPage.tsx b/openmetadata-ui/src/main/resources/ui/src/pages/ContainerPage/ContainerPage.tsx index f8cacf433d6..63c4013b9d2 100644 --- a/openmetadata-ui/src/main/resources/ui/src/pages/ContainerPage/ContainerPage.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/pages/ContainerPage/ContainerPage.tsx @@ -674,7 +674,8 @@ const ContainerPage = () => { Promise.resolve()} + onFeedUpdate={getEntityFeedCount} + onUpdateEntityDetails={() => fetchContainerDetail(containerName)} /> ), diff --git a/openmetadata-ui/src/main/resources/ui/src/pages/DashboardDetailsPage/DashboardDetailsPage.component.tsx b/openmetadata-ui/src/main/resources/ui/src/pages/DashboardDetailsPage/DashboardDetailsPage.component.tsx index bfeb26df423..2dbfe1209de 100644 --- a/openmetadata-ui/src/main/resources/ui/src/pages/DashboardDetailsPage/DashboardDetailsPage.component.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/pages/DashboardDetailsPage/DashboardDetailsPage.component.tsx @@ -36,12 +36,10 @@ import { EntityType } from '../../enums/entity.enum'; import { CreateThread } from '../../generated/api/feed/createThread'; import { Chart } from '../../generated/entity/data/chart'; import { Dashboard } from '../../generated/entity/data/dashboard'; -import { EntityFieldThreadCount } from '../../interface/feed.interface'; import { addToRecentViewed, getCurrentUserId, getEntityMissingError, - getFeedCounts, } from '../../utils/CommonUtils'; import { defaultFields, @@ -69,14 +67,6 @@ const DashboardDetailsPage = () => { const [charts, setCharts] = useState([]); const [isError, setIsError] = useState(false); - const [feedCount, setFeedCount] = useState(0); - const [entityFieldThreadCount, setEntityFieldThreadCount] = useState< - EntityFieldThreadCount[] - >([]); - const [entityFieldTaskCount, setEntityFieldTaskCount] = useState< - EntityFieldThreadCount[] - >([]); - const [dashboardPermissions, setDashboardPermissions] = useState( DEFAULT_ENTITY_PERMISSION ); @@ -102,16 +92,6 @@ const DashboardDetailsPage = () => { } }; - const getEntityFeedCount = () => { - getFeedCounts( - EntityType.DASHBOARD, - dashboardFQN, - setEntityFieldThreadCount, - setEntityFieldTaskCount, - setFeedCount - ); - }; - const saveUpdatedDashboardData = (updatedData: Dashboard) => { const jsonPatch = compare( omitBy(dashboardDetails, isUndefined), @@ -183,8 +163,6 @@ const DashboardDetailsPage = () => { [key]: response[key], }; }); - - getEntityFeedCount(); } catch (error) { showErrorToast(error as AxiosError); } @@ -198,7 +176,6 @@ const DashboardDetailsPage = () => { ...prev, followers: [...(prev?.followers ?? []), ...newValue], })); - getEntityFeedCount(); } catch (error) { showErrorToast( error as AxiosError, @@ -221,8 +198,6 @@ const DashboardDetailsPage = () => { (follower) => follower.id !== oldValue[0].id ) ?? [], })); - - getEntityFeedCount(); } catch (error) { showErrorToast( error as AxiosError, @@ -267,7 +242,6 @@ const DashboardDetailsPage = () => { // which leads to wrong PATCH payload sent after further tags removal return sortTagsForCharts(charts); }); - getEntityFeedCount(); } catch (error) { showErrorToast( error as AxiosError, @@ -288,7 +262,6 @@ const DashboardDetailsPage = () => { const createThread = async (data: CreateThread) => { try { await postThread(data); - getEntityFeedCount(); } catch (error) { showErrorToast( error as AxiosError, @@ -302,7 +275,6 @@ const DashboardDetailsPage = () => { useEffect(() => { if (dashboardPermissions.ViewAll || dashboardPermissions.ViewBasic) { fetchDashboardDetail(dashboardFQN); - getEntityFeedCount(); } }, [dashboardFQN, dashboardPermissions]); @@ -331,9 +303,6 @@ const DashboardDetailsPage = () => { charts={charts} createThread={createThread} dashboardDetails={dashboardDetails} - entityFieldTaskCount={entityFieldTaskCount} - entityFieldThreadCount={entityFieldThreadCount} - feedCount={feedCount} followDashboardHandler={followDashboard} unFollowDashboardHandler={unFollowDashboard} versionHandler={versionHandler} diff --git a/openmetadata-ui/src/main/resources/ui/src/pages/DataModelPage/DataModelPage.component.tsx b/openmetadata-ui/src/main/resources/ui/src/pages/DataModelPage/DataModelPage.component.tsx index 31f21c20a2c..f7d95741b40 100644 --- a/openmetadata-ui/src/main/resources/ui/src/pages/DataModelPage/DataModelPage.component.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/pages/DataModelPage/DataModelPage.component.tsx @@ -22,13 +22,11 @@ import { ResourceEntity, } from 'components/PermissionProvider/PermissionProvider.interface'; import { ERROR_PLACEHOLDER_TYPE } from 'enums/common.enum'; -import { EntityType } from 'enums/entity.enum'; import { compare } from 'fast-json-patch'; import { CreateThread } from 'generated/api/feed/createThread'; import { DashboardDataModel } from 'generated/entity/data/dashboardDataModel'; import { Include } from 'generated/type/include'; import { LabelType, State, TagSource } from 'generated/type/tagLabel'; -import { EntityFieldThreadCount } from 'interface/feed.interface'; import { isUndefined, omitBy } from 'lodash'; import { observer } from 'mobx-react'; import { EntityTags } from 'Models'; @@ -48,11 +46,7 @@ import { removeDataModelFollower, } from 'rest/dataModelsAPI'; import { postThread } from 'rest/feedsAPI'; -import { - getCurrentUserId, - getEntityMissingError, - getFeedCounts, -} from 'utils/CommonUtils'; +import { getCurrentUserId, getEntityMissingError } from 'utils/CommonUtils'; import { getSortedDataModelColumnTags } from 'utils/DataModelsUtils'; import { DEFAULT_ENTITY_PERMISSION } from 'utils/PermissionsUtils'; import { getTagsWithoutTier, getTierTags } from 'utils/TableUtils'; @@ -73,13 +67,6 @@ const DataModelsPage = () => { {} as DashboardDataModel ); - const [feedCount, setFeedCount] = useState(0); - const [entityFieldThreadCount, setEntityFieldThreadCount] = useState< - EntityFieldThreadCount[] - >([]); - - const [, setEntityFieldTaskCount] = useState([]); - // get current user details const currentUser = useMemo( () => AppState.getCurrentUserDetails(), @@ -102,16 +89,6 @@ const DataModelsPage = () => { }; }, [dataModelData]); - const getEntityFeedCount = () => { - getFeedCounts( - EntityType.DASHBOARD_DATA_MODEL, - dashboardDataModelFQN, - setEntityFieldThreadCount, - setEntityFieldTaskCount, - setFeedCount - ); - }; - const fetchResourcePermission = async (dashboardDataModelFQN: string) => { setIsLoading(true); try { @@ -134,7 +111,6 @@ const DataModelsPage = () => { const createThread = async (data: CreateThread) => { try { await postThread(data); - getEntityFeedCount(); } catch (error) { showErrorToast( error as AxiosError, @@ -180,7 +156,6 @@ const DataModelsPage = () => { description: newDescription, version, })); - getEntityFeedCount(); } catch (error) { showErrorToast(error as AxiosError); } @@ -226,7 +201,6 @@ const DataModelsPage = () => { tags: newTags, version, })); - getEntityFeedCount(); } catch (error) { showErrorToast(error as AxiosError); } @@ -245,7 +219,6 @@ const DataModelsPage = () => { owner: newOwner, version, })); - getEntityFeedCount(); } catch (error) { showErrorToast(error as AxiosError); } @@ -274,7 +247,6 @@ const DataModelsPage = () => { tags: newTags, version, })); - getEntityFeedCount(); } } catch (error) { showErrorToast(error as AxiosError); @@ -295,7 +267,6 @@ const DataModelsPage = () => { columns: getSortedDataModelColumnTags(newColumns), version, })); - getEntityFeedCount(); } catch (error) { showErrorToast(error as AxiosError); } @@ -313,7 +284,6 @@ const DataModelsPage = () => { [key]: response[key], version: response.version, })); - getEntityFeedCount(); } catch (error) { showErrorToast(error as AxiosError); } @@ -322,7 +292,6 @@ const DataModelsPage = () => { useEffect(() => { if (hasViewPermission) { fetchDataModelDetails(dashboardDataModelFQN); - getEntityFeedCount(); } }, [dashboardDataModelFQN, dataModelPermissions]); @@ -352,8 +321,6 @@ const DataModelsPage = () => { createThread={createThread} dataModelData={dataModelData} dataModelPermissions={dataModelPermissions} - entityFieldThreadCount={entityFieldThreadCount} - feedCount={feedCount} handleColumnUpdateDataModel={handleColumnUpdateDataModel} handleFollowDataModel={handleFollowDataModel} handleUpdateDescription={handleUpdateDescription} diff --git a/openmetadata-ui/src/main/resources/ui/src/pages/DatabaseSchemaPage/DatabaseSchemaPage.component.tsx b/openmetadata-ui/src/main/resources/ui/src/pages/DatabaseSchemaPage/DatabaseSchemaPage.component.tsx index 1b522b2415f..f756513e89e 100644 --- a/openmetadata-ui/src/main/resources/ui/src/pages/DatabaseSchemaPage/DatabaseSchemaPage.component.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/pages/DatabaseSchemaPage/DatabaseSchemaPage.component.tsx @@ -741,7 +741,8 @@ const DatabaseSchemaPage: FunctionComponent = () => { Promise.resolve()} + onFeedUpdate={getEntityFeedCount} + onUpdateEntityDetails={getDetailsByFQN} /> )} diff --git a/openmetadata-ui/src/main/resources/ui/src/pages/MlModelPage/MlModelPage.component.tsx b/openmetadata-ui/src/main/resources/ui/src/pages/MlModelPage/MlModelPage.component.tsx index 520bbc04781..28e2196355d 100644 --- a/openmetadata-ui/src/main/resources/ui/src/pages/MlModelPage/MlModelPage.component.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/pages/MlModelPage/MlModelPage.component.tsx @@ -35,11 +35,9 @@ import { getVersionPath } from '../../constants/constants'; import { EntityType } from '../../enums/entity.enum'; import { CreateThread } from '../../generated/api/feed/createThread'; import { Mlmodel } from '../../generated/entity/data/mlmodel'; -import { EntityFieldThreadCount } from '../../interface/feed.interface'; import { getCurrentUserId, getEntityMissingError, - getFeedCounts, sortTagsCaseInsensitive, } from '../../utils/CommonUtils'; import { getEntityName } from '../../utils/EntityUtils'; @@ -59,14 +57,6 @@ const MlModelPage = () => { DEFAULT_ENTITY_PERMISSION ); - const [feedCount, setFeedCount] = useState(0); - const [entityFieldThreadCount, setEntityFieldThreadCount] = useState< - EntityFieldThreadCount[] - >([]); - const [entityFieldTaskCount, setEntityFieldTaskCount] = useState< - EntityFieldThreadCount[] - >([]); - const [currentVersion, setCurrentVersion] = useState(); const { getEntityPermissionByFqn } = usePermissionProvider(); @@ -90,16 +80,6 @@ const MlModelPage = () => { } }; - const fetchEntityFeedCount = () => { - getFeedCounts( - EntityType.MLMODEL, - mlModelFqn, - setEntityFieldThreadCount, - setEntityFieldTaskCount, - setFeedCount - ); - }; - const fetchMlModelDetails = async (name: string) => { setIsDetailLoading(true); try { @@ -113,6 +93,12 @@ const MlModelPage = () => { } }; + useEffect(() => { + if (mlModelPermissions.ViewAll || mlModelPermissions.ViewBasic) { + fetchMlModelDetails(mlModelFqn); + } + }, [mlModelPermissions, mlModelFqn]); + const saveUpdatedMlModelData = (updatedData: Mlmodel) => { const jsonPatch = compare(omitBy(mlModelDetail, isUndefined), updatedData); @@ -128,7 +114,6 @@ const MlModelPage = () => { ...preVDetail, description: description, })); - fetchEntityFeedCount(); } catch (error) { showErrorToast(error as AxiosError); } @@ -142,7 +127,6 @@ const MlModelPage = () => { ...preVDetail, followers: [...(mlModelDetail.followers || []), ...newValue], })); - fetchEntityFeedCount(); } catch (error) { showErrorToast( error as AxiosError, @@ -163,7 +147,6 @@ const MlModelPage = () => { (follower) => follower.id !== oldValue[0].id ), })); - fetchEntityFeedCount(); } catch (error) { showErrorToast( error as AxiosError, @@ -182,7 +165,6 @@ const MlModelPage = () => { tags: sortTagsCaseInsensitive(res.tags || []), })); setCurrentVersion(res.version?.toString()); - fetchEntityFeedCount(); } catch (error) { showErrorToast( error as AxiosError, @@ -205,7 +187,6 @@ const MlModelPage = () => { tags: res.tags, })); setCurrentVersion(res.version?.toString()); - fetchEntityFeedCount(); } catch (error) { showErrorToast( error as AxiosError, @@ -224,7 +205,6 @@ const MlModelPage = () => { mlFeatures: response.mlFeatures, })); setCurrentVersion(response.version?.toString()); - fetchEntityFeedCount(); } catch (error) { showErrorToast(error as AxiosError); } @@ -235,7 +215,6 @@ const MlModelPage = () => { const data = await saveUpdatedMlModelData(updatedMlModel); setMlModelDetail(data); setCurrentVersion(data.version?.toString()); - fetchEntityFeedCount(); } catch (error) { showErrorToast( error as AxiosError, @@ -249,7 +228,6 @@ const MlModelPage = () => { const createThread = async (data: CreateThread) => { try { await postThread(data); - fetchEntityFeedCount(); } catch (error) { showErrorToast( error as AxiosError, @@ -266,13 +244,6 @@ const MlModelPage = () => { ); }; - useEffect(() => { - if (mlModelPermissions.ViewAll || mlModelPermissions.ViewBasic) { - fetchMlModelDetails(mlModelFqn); - fetchEntityFeedCount(); - } - }, [mlModelPermissions, mlModelFqn]); - useEffect(() => { fetchResourcePermission(mlModelFqn); }, [mlModelFqn]); @@ -302,9 +273,6 @@ const MlModelPage = () => { { owner={tableDetails?.owner} tags={tableDetails?.tags} onFeedUpdate={getEntityFeedCount} + onUpdateEntityDetails={fetchTableDetails} /> ), diff --git a/openmetadata-ui/src/main/resources/ui/src/pages/TopicDetails/TopicDetailsPage.component.tsx b/openmetadata-ui/src/main/resources/ui/src/pages/TopicDetails/TopicDetailsPage.component.tsx index b51f2419aa5..71d0f365903 100644 --- a/openmetadata-ui/src/main/resources/ui/src/pages/TopicDetails/TopicDetailsPage.component.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/pages/TopicDetails/TopicDetailsPage.component.tsx @@ -38,12 +38,10 @@ import { getVersionPath } from '../../constants/constants'; import { EntityType, TabSpecificField } from '../../enums/entity.enum'; import { CreateThread } from '../../generated/api/feed/createThread'; import { Topic } from '../../generated/entity/data/topic'; -import { EntityFieldThreadCount } from '../../interface/feed.interface'; import { addToRecentViewed, getCurrentUserId, getEntityMissingError, - getFeedCounts, sortTagsCaseInsensitive, } from '../../utils/CommonUtils'; import { getEntityName } from '../../utils/EntityUtils'; @@ -61,28 +59,10 @@ const TopicDetailsPage: FunctionComponent = () => { const [isLoading, setLoading] = useState(true); const [isError, setIsError] = useState(false); - const [feedCount, setFeedCount] = useState(0); - const [entityFieldThreadCount, setEntityFieldThreadCount] = useState< - EntityFieldThreadCount[] - >([]); - const [entityFieldTaskCount, setEntityFieldTaskCount] = useState< - EntityFieldThreadCount[] - >([]); - const [topicPermissions, setTopicPermissions] = useState( DEFAULT_ENTITY_PERMISSION ); - const getEntityFeedCount = () => { - getFeedCounts( - EntityType.TOPIC, - topicFQN, - setEntityFieldThreadCount, - setEntityFieldTaskCount, - setFeedCount - ); - }; - const { id: topicId, version: currentVersion } = topicDetails; const saveUpdatedTopicData = (updatedData: Topic) => { @@ -110,7 +90,6 @@ const TopicDetailsPage: FunctionComponent = () => { [key]: res[key], }; }); - getEntityFeedCount(); } catch (error) { showErrorToast(error as AxiosError); } @@ -181,7 +160,6 @@ const TopicDetailsPage: FunctionComponent = () => { ...prev, followers: [...(prev?.followers ?? []), ...newValue], })); - getEntityFeedCount(); } catch (error) { showErrorToast( error as AxiosError, @@ -202,7 +180,6 @@ const TopicDetailsPage: FunctionComponent = () => { (follower) => follower.id !== oldValue[0].id ), })); - getEntityFeedCount(); } catch (error) { showErrorToast( error as AxiosError, @@ -223,7 +200,6 @@ const TopicDetailsPage: FunctionComponent = () => { const createThread = async (data: CreateThread) => { try { await postThread(data); - getEntityFeedCount(); } catch (error) { showErrorToast( error as AxiosError, @@ -241,7 +217,6 @@ const TopicDetailsPage: FunctionComponent = () => { useEffect(() => { if (topicPermissions.ViewAll || topicPermissions.ViewBasic) { fetchTopicDetail(topicFQN); - getEntityFeedCount(); } }, [topicPermissions, topicFQN]); @@ -262,9 +237,6 @@ const TopicDetailsPage: FunctionComponent = () => { return ( { Promise.resolve()} + onFeedUpdate={getEntityFeedCount} /> )}