diff --git a/openmetadata-ui/src/main/resources/ui/src/components/ActivityFeed/ActivityFeedProvider/ActivityFeedProvider.tsx b/openmetadata-ui/src/main/resources/ui/src/components/ActivityFeed/ActivityFeedProvider/ActivityFeedProvider.tsx index 18a67fcdde9..81c5ae8a17d 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/ActivityFeed/ActivityFeedProvider/ActivityFeedProvider.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/components/ActivityFeed/ActivityFeedProvider/ActivityFeedProvider.tsx @@ -166,7 +166,8 @@ const ActivityFeedProvider = ({ children, user }: Props) => { type?: ThreadType, entityType?: EntityType, fqn?: string, - taskStatus?: ThreadTaskStatus + taskStatus?: ThreadTaskStatus, + limit?: number ) => { try { setLoading(true); @@ -187,7 +188,8 @@ const ActivityFeedProvider = ({ children, user }: Props) => { type, feedFilterType, taskStatus, - userId + userId, + limit ); setEntityThread((prev) => (after ? [...prev, ...data] : [...data])); setEntityPaging(paging); diff --git a/openmetadata-ui/src/main/resources/ui/src/components/ActivityFeed/ActivityFeedProvider/ActivityFeedProviderContext.interface.ts b/openmetadata-ui/src/main/resources/ui/src/components/ActivityFeed/ActivityFeedProvider/ActivityFeedProviderContext.interface.ts index b332a5de2be..3e9ed8d57a3 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/ActivityFeed/ActivityFeedProvider/ActivityFeedProviderContext.interface.ts +++ b/openmetadata-ui/src/main/resources/ui/src/components/ActivityFeed/ActivityFeedProvider/ActivityFeedProviderContext.interface.ts @@ -55,7 +55,8 @@ export interface ActivityFeedProviderContextType { type?: ThreadType, entityType?: EntityType, fqn?: string, - taskStatus?: ThreadTaskStatus + taskStatus?: ThreadTaskStatus, + limit?: number ) => Promise; showDrawer: (thread: Thread) => void; hideDrawer: () => void; diff --git a/openmetadata-ui/src/main/resources/ui/src/components/MyData/Widgets/FeedsWidget/FeedsWidget.component.tsx b/openmetadata-ui/src/main/resources/ui/src/components/MyData/Widgets/FeedsWidget/FeedsWidget.component.tsx index 8d1304c893c..ac7103a7458 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/MyData/Widgets/FeedsWidget/FeedsWidget.component.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/components/MyData/Widgets/FeedsWidget/FeedsWidget.component.tsx @@ -17,7 +17,7 @@ import { isUndefined } from 'lodash'; import React, { useCallback, useEffect, useMemo, useState } from 'react'; import { useTranslation } from 'react-i18next'; import { Link, useHistory } from 'react-router-dom'; -import { ROUTES } from '../../../../constants/constants'; +import { PAGE_SIZE_LARGE, ROUTES } from '../../../../constants/constants'; import { FEED_COUNT_INITIAL_DATA } from '../../../../constants/entity.constants'; import { mockFeedData } from '../../../../constants/mockTourData.constants'; import { useTourProvider } from '../../../../context/TourProvider/TourProvider'; @@ -63,7 +63,15 @@ const FeedsWidget = ({ useEffect(() => { if (activeTab === ActivityFeedTabs.ALL) { - getFeedData(defaultFilter, undefined, ThreadType.Conversation); + getFeedData( + defaultFilter, + undefined, + ThreadType.Conversation, + undefined, + undefined, + undefined, + PAGE_SIZE_LARGE + ); } else if (activeTab === ActivityFeedTabs.MENTIONS) { getFeedData(FeedFilter.MENTIONS); } else if (activeTab === ActivityFeedTabs.TASKS) { diff --git a/openmetadata-ui/src/main/resources/ui/src/components/MyData/Widgets/FeedsWidget/FeedsWidget.test.tsx b/openmetadata-ui/src/main/resources/ui/src/components/MyData/Widgets/FeedsWidget/FeedsWidget.test.tsx index ece02fa5e68..c46b6589a8b 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/MyData/Widgets/FeedsWidget/FeedsWidget.test.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/components/MyData/Widgets/FeedsWidget/FeedsWidget.test.tsx @@ -12,6 +12,9 @@ */ import { act, fireEvent, render, screen } from '@testing-library/react'; import React from 'react'; +import { PAGE_SIZE_LARGE } from '../../../../constants/constants'; +import { useApplicationStore } from '../../../../hooks/useApplicationStore'; +import { mockUserData } from '../../../Settings/Users/mocks/User.mocks'; import FeedsWidget from './FeedsWidget.component'; const mockHandleRemoveWidget = jest.fn(); @@ -114,7 +117,47 @@ jest.mock( }) ); +jest.mock('../../../../hooks/useApplicationStore', () => ({ + useApplicationStore: jest.fn(() => ({ + currentUser: mockUserData, + })), +})); + describe('FeedsWidget', () => { + it('should call getFeedData for owner conversation on load for non admin user', () => { + render(); + + expect(mockUseActivityFeedProviderValue.getFeedData).toHaveBeenCalledWith( + 'OWNER_OR_FOLLOWS', + undefined, + 'Conversation', + undefined, + undefined, + undefined, + PAGE_SIZE_LARGE + ); + }); + + it('should call getFeedData for ALL conversation on load for admin user', () => { + (useApplicationStore as unknown as jest.Mock).mockImplementationOnce( + () => ({ + currentUser: { ...mockUserData, isAdmin: true }, + }) + ); + + render(); + + expect(mockUseActivityFeedProviderValue.getFeedData).toHaveBeenCalledWith( + 'ALL', + undefined, + 'Conversation', + undefined, + undefined, + undefined, + PAGE_SIZE_LARGE + ); + }); + it('should render FeedsWidget', async () => { await act(async () => { render(); diff --git a/openmetadata-ui/src/main/resources/ui/src/rest/feedsAPI.ts b/openmetadata-ui/src/main/resources/ui/src/rest/feedsAPI.ts index b5f346add38..4d408db02ca 100644 --- a/openmetadata-ui/src/main/resources/ui/src/rest/feedsAPI.ts +++ b/openmetadata-ui/src/main/resources/ui/src/rest/feedsAPI.ts @@ -36,7 +36,8 @@ export const getAllFeeds = async ( type?: ThreadType, filterType?: FeedFilter, taskStatus?: ThreadTaskStatus, - userId?: string + userId?: string, + limit?: number ) => { const isFilterAll = filterType === FeedFilter.ALL || isUndefined(filterType); @@ -50,6 +51,7 @@ export const getAllFeeds = async ( filterType: isFilterAll ? undefined : filterType, taskStatus, userId: isFilterAll ? undefined : userId, + limit, }, } );