mirror of
https://github.com/open-metadata/OpenMetadata.git
synced 2025-09-26 01:15:08 +00:00
Merge remote-tracking branch 'origin/main'
This commit is contained in:
commit
a0e5087494
@ -119,6 +119,7 @@ ENTITY_FIELD
|
|||||||
| 'sourceHash'
|
| 'sourceHash'
|
||||||
| 'testCaseResult'
|
| 'testCaseResult'
|
||||||
| 'tests'
|
| 'tests'
|
||||||
|
| 'pipelineStatus'
|
||||||
;
|
;
|
||||||
|
|
||||||
|
|
||||||
|
@ -35,6 +35,7 @@ import {
|
|||||||
Post,
|
Post,
|
||||||
TaskType,
|
TaskType,
|
||||||
Thread,
|
Thread,
|
||||||
|
ThreadTaskStatus,
|
||||||
ThreadType,
|
ThreadType,
|
||||||
} from '../../../generated/entity/feed/thread';
|
} from '../../../generated/entity/feed/thread';
|
||||||
import { EntityReference } from '../../../generated/entity/type';
|
import { EntityReference } from '../../../generated/entity/type';
|
||||||
@ -164,7 +165,8 @@ const ActivityFeedProvider = ({ children, user }: Props) => {
|
|||||||
after?: string,
|
after?: string,
|
||||||
type?: ThreadType,
|
type?: ThreadType,
|
||||||
entityType?: EntityType,
|
entityType?: EntityType,
|
||||||
fqn?: string
|
fqn?: string,
|
||||||
|
taskStatus?: ThreadTaskStatus
|
||||||
) => {
|
) => {
|
||||||
try {
|
try {
|
||||||
setLoading(true);
|
setLoading(true);
|
||||||
@ -183,7 +185,7 @@ const ActivityFeedProvider = ({ children, user }: Props) => {
|
|||||||
after,
|
after,
|
||||||
type,
|
type,
|
||||||
feedFilterType,
|
feedFilterType,
|
||||||
undefined,
|
taskStatus,
|
||||||
userId
|
userId
|
||||||
);
|
);
|
||||||
setEntityThread((prev) => (after ? [...prev, ...data] : [...data]));
|
setEntityThread((prev) => (after ? [...prev, ...data] : [...data]));
|
||||||
|
@ -18,6 +18,7 @@ import {
|
|||||||
Post,
|
Post,
|
||||||
ReactionType,
|
ReactionType,
|
||||||
Thread,
|
Thread,
|
||||||
|
ThreadTaskStatus,
|
||||||
ThreadType,
|
ThreadType,
|
||||||
} from '../../../generated/entity/feed/thread';
|
} from '../../../generated/entity/feed/thread';
|
||||||
import { EntityReference } from '../../../generated/entity/type';
|
import { EntityReference } from '../../../generated/entity/type';
|
||||||
@ -53,7 +54,8 @@ export interface ActivityFeedProviderContextType {
|
|||||||
after?: string,
|
after?: string,
|
||||||
type?: ThreadType,
|
type?: ThreadType,
|
||||||
entityType?: EntityType,
|
entityType?: EntityType,
|
||||||
fqn?: string
|
fqn?: string,
|
||||||
|
taskStatus?: ThreadTaskStatus
|
||||||
) => Promise<void>;
|
) => Promise<void>;
|
||||||
showDrawer: (thread: Thread) => void;
|
showDrawer: (thread: Thread) => void;
|
||||||
hideDrawer: () => void;
|
hideDrawer: () => void;
|
||||||
|
@ -343,7 +343,8 @@ export const ActivityFeedTab = ({
|
|||||||
</Space>
|
</Space>
|
||||||
|
|
||||||
<span>
|
<span>
|
||||||
{getCountBadge(
|
{!isUserEntity &&
|
||||||
|
getCountBadge(
|
||||||
count.conversationCount,
|
count.conversationCount,
|
||||||
'',
|
'',
|
||||||
activeTab === ActivityFeedTabs.ALL
|
activeTab === ActivityFeedTabs.ALL
|
||||||
@ -390,7 +391,7 @@ export const ActivityFeedTab = ({
|
|||||||
<span>{t('label.task-plural')}</span>
|
<span>{t('label.task-plural')}</span>
|
||||||
</Space>
|
</Space>
|
||||||
<span>
|
<span>
|
||||||
{getCountBadge(count.totalTasksCount, '', isTaskActiveTab)}
|
{getCountBadge(count.openTaskCount, '', isTaskActiveTab)}
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
),
|
),
|
||||||
|
@ -12,6 +12,7 @@
|
|||||||
*/
|
*/
|
||||||
import { CloseOutlined, DragOutlined } from '@ant-design/icons';
|
import { CloseOutlined, DragOutlined } from '@ant-design/icons';
|
||||||
import { Button, Space, Tabs, Typography } from 'antd';
|
import { Button, Space, Tabs, Typography } from 'antd';
|
||||||
|
import { AxiosError } from 'axios';
|
||||||
import { isUndefined } from 'lodash';
|
import { isUndefined } from 'lodash';
|
||||||
import React, { useCallback, useEffect, useMemo, useState } from 'react';
|
import React, { useCallback, useEffect, useMemo, useState } from 'react';
|
||||||
import { useTranslation } from 'react-i18next';
|
import { useTranslation } from 'react-i18next';
|
||||||
@ -21,6 +22,7 @@ import { useActivityFeedProvider } from '../../../components/ActivityFeed/Activi
|
|||||||
import { ActivityFeedTabs } from '../../../components/ActivityFeed/ActivityFeedTab/ActivityFeedTab.interface';
|
import { ActivityFeedTabs } from '../../../components/ActivityFeed/ActivityFeedTab/ActivityFeedTab.interface';
|
||||||
import { useTourProvider } from '../../../components/TourProvider/TourProvider';
|
import { useTourProvider } from '../../../components/TourProvider/TourProvider';
|
||||||
import { ROUTES } from '../../../constants/constants';
|
import { ROUTES } from '../../../constants/constants';
|
||||||
|
import { FEED_COUNT_INITIAL_DATA } from '../../../constants/entity.constants';
|
||||||
import { mockFeedData } from '../../../constants/mockTourData.constants';
|
import { mockFeedData } from '../../../constants/mockTourData.constants';
|
||||||
import { EntityTabs, EntityType } from '../../../enums/entity.enum';
|
import { EntityTabs, EntityType } from '../../../enums/entity.enum';
|
||||||
import { FeedFilter } from '../../../enums/mydata.enum';
|
import { FeedFilter } from '../../../enums/mydata.enum';
|
||||||
@ -28,13 +30,15 @@ import {
|
|||||||
ThreadTaskStatus,
|
ThreadTaskStatus,
|
||||||
ThreadType,
|
ThreadType,
|
||||||
} from '../../../generated/entity/feed/thread';
|
} from '../../../generated/entity/feed/thread';
|
||||||
|
import { FeedCounts } from '../../../interface/feed.interface';
|
||||||
import { WidgetCommonProps } from '../../../pages/CustomizablePage/CustomizablePage.interface';
|
import { WidgetCommonProps } from '../../../pages/CustomizablePage/CustomizablePage.interface';
|
||||||
import { getFeedsWithFilter } from '../../../rest/feedsAPI';
|
import { getFeedCount } from '../../../rest/feedsAPI';
|
||||||
import {
|
import {
|
||||||
getCountBadge,
|
getCountBadge,
|
||||||
getEntityDetailLink,
|
getEntityDetailLink,
|
||||||
Transi18next,
|
Transi18next,
|
||||||
} from '../../../utils/CommonUtils';
|
} from '../../../utils/CommonUtils';
|
||||||
|
import { getEntityUserLink } from '../../../utils/EntityUtils';
|
||||||
import { showErrorToast } from '../../../utils/ToastUtils';
|
import { showErrorToast } from '../../../utils/ToastUtils';
|
||||||
import { useAuthContext } from '../../Auth/AuthProviders/AuthProvider';
|
import { useAuthContext } from '../../Auth/AuthProviders/AuthProvider';
|
||||||
import FeedsFilterPopover from '../../common/FeedsFilterPopover/FeedsFilterPopover.component';
|
import FeedsFilterPopover from '../../common/FeedsFilterPopover/FeedsFilterPopover.component';
|
||||||
@ -54,7 +58,7 @@ const FeedsWidget = ({
|
|||||||
);
|
);
|
||||||
const { loading, entityThread, entityPaging, getFeedData } =
|
const { loading, entityThread, entityPaging, getFeedData } =
|
||||||
useActivityFeedProvider();
|
useActivityFeedProvider();
|
||||||
const [taskCount, setTaskCount] = useState(0);
|
const [count, setCount] = useState<FeedCounts>(FEED_COUNT_INITIAL_DATA);
|
||||||
|
|
||||||
const [defaultFilter, setDefaultFilter] = useState<FeedFilter>(
|
const [defaultFilter, setDefaultFilter] = useState<FeedFilter>(
|
||||||
currentUser?.isAdmin ? FeedFilter.ALL : FeedFilter.OWNER_OR_FOLLOWS
|
currentUser?.isAdmin ? FeedFilter.ALL : FeedFilter.OWNER_OR_FOLLOWS
|
||||||
@ -66,13 +70,36 @@ const FeedsWidget = ({
|
|||||||
} else if (activeTab === ActivityFeedTabs.MENTIONS) {
|
} else if (activeTab === ActivityFeedTabs.MENTIONS) {
|
||||||
getFeedData(FeedFilter.MENTIONS);
|
getFeedData(FeedFilter.MENTIONS);
|
||||||
} else if (activeTab === ActivityFeedTabs.TASKS) {
|
} else if (activeTab === ActivityFeedTabs.TASKS) {
|
||||||
getFeedData(FeedFilter.OWNER, undefined, ThreadType.Task);
|
getFeedData(
|
||||||
|
FeedFilter.OWNER,
|
||||||
|
undefined,
|
||||||
|
ThreadType.Task,
|
||||||
|
undefined,
|
||||||
|
undefined,
|
||||||
|
ThreadTaskStatus.Open
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}, [activeTab, defaultFilter]);
|
}, [activeTab, defaultFilter]);
|
||||||
|
|
||||||
const countBadge = useMemo(() => {
|
const mentionCountBadge = useMemo(
|
||||||
return getCountBadge(taskCount, '', activeTab === 'tasks');
|
() =>
|
||||||
}, [taskCount, activeTab]);
|
getCountBadge(
|
||||||
|
count.mentionCount,
|
||||||
|
'',
|
||||||
|
activeTab === ActivityFeedTabs.MENTIONS
|
||||||
|
),
|
||||||
|
[count.mentionCount, activeTab]
|
||||||
|
);
|
||||||
|
|
||||||
|
const taskCountBadge = useMemo(
|
||||||
|
() =>
|
||||||
|
getCountBadge(
|
||||||
|
count.openTaskCount,
|
||||||
|
'',
|
||||||
|
activeTab === ActivityFeedTabs.TASKS
|
||||||
|
),
|
||||||
|
[count.openTaskCount, activeTab]
|
||||||
|
);
|
||||||
|
|
||||||
const onTabChange = (key: string) => setActiveTab(key as ActivityFeedTabs);
|
const onTabChange = (key: string) => setActiveTab(key as ActivityFeedTabs);
|
||||||
|
|
||||||
@ -106,23 +133,27 @@ const FeedsWidget = ({
|
|||||||
setDefaultFilter(filter);
|
setDefaultFilter(filter);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const fetchFeedsCount = async () => {
|
||||||
|
try {
|
||||||
|
const res = await getFeedCount(
|
||||||
|
getEntityUserLink(currentUser?.name ?? '')
|
||||||
|
);
|
||||||
|
setCount((prev) => ({
|
||||||
|
...prev,
|
||||||
|
openTaskCount: res?.[0]?.openTaskCount ?? 0,
|
||||||
|
|
||||||
|
mentionCount: res?.[0]?.mentionCount ?? 0,
|
||||||
|
}));
|
||||||
|
} catch (err) {
|
||||||
|
showErrorToast(err as AxiosError, t('server.entity-feed-fetch-error'));
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
setDefaultFilter(
|
setDefaultFilter(
|
||||||
currentUser?.isAdmin ? FeedFilter.ALL : FeedFilter.OWNER_OR_FOLLOWS
|
currentUser?.isAdmin ? FeedFilter.ALL : FeedFilter.OWNER_OR_FOLLOWS
|
||||||
);
|
);
|
||||||
getFeedsWithFilter(
|
fetchFeedsCount();
|
||||||
currentUser?.id,
|
|
||||||
FeedFilter.OWNER,
|
|
||||||
undefined,
|
|
||||||
ThreadType.Task,
|
|
||||||
ThreadTaskStatus.Open
|
|
||||||
)
|
|
||||||
.then((res) => {
|
|
||||||
setTaskCount(res.data.length);
|
|
||||||
})
|
|
||||||
.catch((err) => {
|
|
||||||
showErrorToast(err);
|
|
||||||
});
|
|
||||||
}, [currentUser]);
|
}, [currentUser]);
|
||||||
|
|
||||||
const threads = useMemo(() => {
|
const threads = useMemo(() => {
|
||||||
@ -177,7 +208,12 @@ const FeedsWidget = ({
|
|||||||
),
|
),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: `@${t('label.mention-plural')}`,
|
label: (
|
||||||
|
<>
|
||||||
|
{`@${t('label.mention-plural')}`}
|
||||||
|
{mentionCountBadge}
|
||||||
|
</>
|
||||||
|
),
|
||||||
key: ActivityFeedTabs.MENTIONS,
|
key: ActivityFeedTabs.MENTIONS,
|
||||||
children: (
|
children: (
|
||||||
<>
|
<>
|
||||||
@ -196,7 +232,7 @@ const FeedsWidget = ({
|
|||||||
label: (
|
label: (
|
||||||
<>
|
<>
|
||||||
{`${t('label.task-plural')} `}
|
{`${t('label.task-plural')} `}
|
||||||
{countBadge}
|
{taskCountBadge}
|
||||||
</>
|
</>
|
||||||
),
|
),
|
||||||
key: ActivityFeedTabs.TASKS,
|
key: ActivityFeedTabs.TASKS,
|
||||||
|
@ -81,7 +81,7 @@ p {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.page-container {
|
.page-container {
|
||||||
padding: 0 24px;
|
padding: 0 24px 16px 24px;
|
||||||
}
|
}
|
||||||
|
|
||||||
a,
|
a,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user