From 6b3fd3bf804b2f92147b796d7e102d7ee428496d Mon Sep 17 00:00:00 2001 From: Shailesh Parmar Date: Thu, 3 Apr 2025 20:45:04 +0530 Subject: [PATCH] Remove: user list api from activityFeedProvider without impacting current behaviour (#20614) --- .../ActivityFeedProvider.test.tsx | 4 -- .../ActivityFeedProvider.tsx | 40 ++---------------- .../ActivityFeedProviderContext.interface.ts | 2 - .../IncidentManagerPageHeader.component.tsx | 10 +---- .../IncidentManagerPageHeader.test.tsx | 2 - ...estCaseIncidentManagerStatus.component.tsx | 2 - ...TestCaseIncidentManagerStatus.interface.ts | 2 - .../TestCaseStatusModal.component.tsx | 37 +++++++++++++++-- .../TestCaseStatusModal.interface.ts | 2 - .../Entity/Task/TaskTab/TaskTab.component.tsx | 35 +++++++++++++++- .../Task/TaskTab/TaskTabNew.component.tsx | 39 ++++++++++++++++-- .../IncidentManager.component.tsx | 41 ++----------------- 12 files changed, 109 insertions(+), 107 deletions(-) diff --git a/openmetadata-ui/src/main/resources/ui/src/components/ActivityFeed/ActivityFeedProvider/ActivityFeedProvider.test.tsx b/openmetadata-ui/src/main/resources/ui/src/components/ActivityFeed/ActivityFeedProvider/ActivityFeedProvider.test.tsx index 072fb915f27..6f7089b0eb2 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/ActivityFeed/ActivityFeedProvider/ActivityFeedProvider.test.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/components/ActivityFeed/ActivityFeedProvider/ActivityFeedProvider.test.tsx @@ -51,10 +51,6 @@ jest.mock('../../../utils/EntityUtils', () => ({ getListTestCaseIncidentByStateId: jest.fn(), })); -jest.mock('../../../rest/userAPI', () => ({ - getUsers: jest.fn(), -})); - jest.mock('../../../utils/EntityUtils', () => ({ getEntityFeedLink: jest.fn(), getEntityReferenceListFromEntities: jest.fn(), 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 b84e097a016..bc4c8782a8c 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 @@ -19,15 +19,11 @@ import React, { ReactNode, useCallback, useContext, - useEffect, useMemo, useState, } from 'react'; import { useTranslation } from 'react-i18next'; -import { - PAGE_SIZE_LARGE, - PAGE_SIZE_MEDIUM, -} from '../../../constants/constants'; +import { PAGE_SIZE_LARGE } from '../../../constants/constants'; import { EntityType } from '../../../enums/entity.enum'; import { FeedFilter } from '../../../enums/mydata.enum'; import { ReactionOperation } from '../../../enums/reactions.enum'; @@ -38,7 +34,6 @@ import { ThreadTaskStatus, ThreadType, } from '../../../generated/entity/feed/thread'; -import { EntityReference } from '../../../generated/entity/type'; import { TestCaseResolutionStatus } from '../../../generated/tests/testCaseResolutionStatus'; import { Paging } from '../../../generated/type/paging'; import { Reaction, ReactionType } from '../../../generated/type/reaction'; @@ -53,11 +48,7 @@ import { updateThread, } from '../../../rest/feedsAPI'; import { getListTestCaseIncidentByStateId } from '../../../rest/incidentManagerAPI'; -import { getUsers } from '../../../rest/userAPI'; -import { - getEntityFeedLink, - getEntityReferenceListFromEntities, -} from '../../../utils/EntityUtils'; +import { getEntityFeedLink } from '../../../utils/EntityUtils'; import { getUpdatedThread } from '../../../utils/FeedUtils'; import { showErrorToast } from '../../../utils/ToastUtils'; import ActivityFeedDrawer from '../ActivityFeedDrawer/ActivityFeedDrawer'; @@ -85,9 +76,7 @@ const ActivityFeedProvider = ({ children, user }: Props) => { const [testCaseResolutionStatus, setTestCaseResolutionStatus] = useState< TestCaseResolutionStatus[] >([]); - const [initialAssignees, setInitialAssignees] = useState( - [] - ); + const { currentUser } = useApplicationStore(); const fetchTestCaseResolution = useCallback(async (id: string) => { @@ -412,27 +401,6 @@ const ActivityFeedProvider = ({ children, user }: Props) => { }, [setTestCaseResolutionStatus] ); - const fetchInitialAssign = useCallback(async () => { - try { - const { data } = await getUsers({ - limit: PAGE_SIZE_MEDIUM, - - isBot: false, - }); - const filterData = getEntityReferenceListFromEntities( - data, - EntityType.USER - ); - setInitialAssignees(filterData); - } catch (error) { - setInitialAssignees([]); - } - }, []); - - useEffect(() => { - // fetch users once and store in state - fetchInitialAssign(); - }, []); const activityFeedContextValues = useMemo(() => { return { @@ -457,7 +425,6 @@ const ActivityFeedProvider = ({ children, user }: Props) => { testCaseResolutionStatus, fetchUpdatedThread, updateTestCaseIncidentStatus, - initialAssignees, }; }, [ entityThread, @@ -482,7 +449,6 @@ const ActivityFeedProvider = ({ children, user }: Props) => { testCaseResolutionStatus, fetchUpdatedThread, updateTestCaseIncidentStatus, - initialAssignees, ]); return ( 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 529fbc9246a..d89520b90be 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 @@ -21,7 +21,6 @@ import { ThreadTaskStatus, ThreadType, } from '../../../generated/entity/feed/thread'; -import { EntityReference } from '../../../generated/entity/type'; import { TestCaseResolutionStatus } from '../../../generated/tests/testCaseResolutionStatus'; import { Paging } from '../../../generated/type/paging'; @@ -70,5 +69,4 @@ export interface ActivityFeedProviderContextType { ) => Promise; testCaseResolutionStatus: TestCaseResolutionStatus[]; updateTestCaseIncidentStatus: (status: TestCaseResolutionStatus[]) => void; - initialAssignees: EntityReference[]; } diff --git a/openmetadata-ui/src/main/resources/ui/src/components/DataQuality/IncidentManager/IncidentManagerPageHeader/IncidentManagerPageHeader.component.tsx b/openmetadata-ui/src/main/resources/ui/src/components/DataQuality/IncidentManager/IncidentManagerPageHeader/IncidentManagerPageHeader.component.tsx index 227bf691d1f..1eaca099b4c 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/DataQuality/IncidentManager/IncidentManagerPageHeader/IncidentManagerPageHeader.component.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/components/DataQuality/IncidentManager/IncidentManagerPageHeader/IncidentManagerPageHeader.component.tsx @@ -73,7 +73,6 @@ const IncidentManagerPageHeader = ({ getFeedData, testCaseResolutionStatus, updateTestCaseIncidentStatus, - initialAssignees, } = useActivityFeedProvider(); const columnName = useMemo(() => { @@ -268,7 +267,6 @@ const IncidentManagerPageHeader = ({ @@ -306,13 +304,7 @@ const IncidentManagerPageHeader = ({ ); - }, [ - testCaseStatusData, - isLoading, - activeTask, - initialAssignees, - hasEditStatusPermission, - ]); + }, [testCaseStatusData, isLoading, activeTask, hasEditStatusPermission]); return ( diff --git a/openmetadata-ui/src/main/resources/ui/src/components/DataQuality/IncidentManager/IncidentManagerPageHeader/IncidentManagerPageHeader.test.tsx b/openmetadata-ui/src/main/resources/ui/src/components/DataQuality/IncidentManager/IncidentManagerPageHeader/IncidentManagerPageHeader.test.tsx index fb14f0adaac..6cda7a0eba9 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/DataQuality/IncidentManager/IncidentManagerPageHeader/IncidentManagerPageHeader.test.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/components/DataQuality/IncidentManager/IncidentManagerPageHeader/IncidentManagerPageHeader.test.tsx @@ -15,7 +15,6 @@ import { act, fireEvent, render, screen } from '@testing-library/react'; import React from 'react'; import { Severities } from '../../../../generated/tests/testCaseResolutionStatus'; import { - MOCK_INITIAL_ASSIGNEE, MOCK_TEST_CASE_DATA, MOCK_TEST_CASE_INCIDENT, MOCK_TEST_CASE_RESOLUTION_STATUS, @@ -47,7 +46,6 @@ const mockUseActivityFeedProviderValue = { postFeed: jest.fn(), testCaseResolutionStatus: MOCK_TEST_CASE_RESOLUTION_STATUS, updateTestCaseIncidentStatus: jest.fn(), - initialAssignees: MOCK_INITIAL_ASSIGNEE, }; const mockOnOwnerUpdate = jest.fn(); diff --git a/openmetadata-ui/src/main/resources/ui/src/components/DataQuality/IncidentManager/TestCaseStatus/TestCaseIncidentManagerStatus.component.tsx b/openmetadata-ui/src/main/resources/ui/src/components/DataQuality/IncidentManager/TestCaseStatus/TestCaseIncidentManagerStatus.component.tsx index 36e796753aa..330e480e3c6 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/DataQuality/IncidentManager/TestCaseStatus/TestCaseIncidentManagerStatus.component.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/components/DataQuality/IncidentManager/TestCaseStatus/TestCaseIncidentManagerStatus.component.tsx @@ -34,7 +34,6 @@ import { TestCaseStatusIncidentManagerProps } from './TestCaseIncidentManagerSta const TestCaseIncidentManagerStatus = ({ data, onSubmit, - usersList, hasPermission, }: TestCaseStatusIncidentManagerProps) => { const [isEditStatus, setIsEditStatus] = useState(false); @@ -92,7 +91,6 @@ const TestCaseIncidentManagerStatus = ({ data={data} open={isEditStatus} testCaseFqn={data.testCaseReference?.fullyQualifiedName ?? ''} - usersList={usersList} onCancel={onCancel} onSubmit={onSubmit} /> diff --git a/openmetadata-ui/src/main/resources/ui/src/components/DataQuality/IncidentManager/TestCaseStatus/TestCaseIncidentManagerStatus.interface.ts b/openmetadata-ui/src/main/resources/ui/src/components/DataQuality/IncidentManager/TestCaseStatus/TestCaseIncidentManagerStatus.interface.ts index 415a5e81d15..0d457603b5b 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/DataQuality/IncidentManager/TestCaseStatus/TestCaseIncidentManagerStatus.interface.ts +++ b/openmetadata-ui/src/main/resources/ui/src/components/DataQuality/IncidentManager/TestCaseStatus/TestCaseIncidentManagerStatus.interface.ts @@ -11,12 +11,10 @@ * limitations under the License. */ -import { EntityReference } from '../../../../generated/entity/type'; import { TestCaseResolutionStatus } from '../../../../generated/tests/testCaseResolutionStatus'; export interface TestCaseStatusIncidentManagerProps { data: TestCaseResolutionStatus; onSubmit: (data: TestCaseResolutionStatus) => void; - usersList?: EntityReference[]; hasPermission?: boolean; } diff --git a/openmetadata-ui/src/main/resources/ui/src/components/DataQuality/TestCaseStatusModal/TestCaseStatusModal.component.tsx b/openmetadata-ui/src/main/resources/ui/src/components/DataQuality/TestCaseStatusModal/TestCaseStatusModal.component.tsx index 6680398a831..efc992fc237 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/DataQuality/TestCaseStatusModal/TestCaseStatusModal.component.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/components/DataQuality/TestCaseStatusModal/TestCaseStatusModal.component.tsx @@ -13,7 +13,7 @@ import { Form, Modal, Select } from 'antd'; import { AxiosError } from 'axios'; import { startCase, unionBy } from 'lodash'; -import React, { useEffect, useMemo, useState } from 'react'; +import React, { useCallback, useEffect, useMemo, useState } from 'react'; import { useTranslation } from 'react-i18next'; import { EntityType } from '../../../enums/entity.enum'; import { CreateTestCaseResolutionStatus } from '../../../generated/api/tests/createTestCaseResolutionStatus'; @@ -22,13 +22,21 @@ import { TestCaseResolutionStatusTypes } from '../../../generated/tests/testCase import Assignees from '../../../pages/TasksPage/shared/Assignees'; import { Option } from '../../../pages/TasksPage/TasksPage.interface'; import { postTestCaseIncidentStatus } from '../../../rest/incidentManagerAPI'; -import { getEntityReferenceFromEntity } from '../../../utils/EntityUtils'; +import { + getEntityReferenceFromEntity, + getEntityReferenceListFromEntities, +} from '../../../utils/EntityUtils'; import { fetchOptions, generateOptions } from '../../../utils/TasksUtils'; import { showErrorToast } from '../../../utils/ToastUtils'; -import { VALIDATION_MESSAGES } from '../../../constants/constants'; +import { + PAGE_SIZE_MEDIUM, + VALIDATION_MESSAGES, +} from '../../../constants/constants'; +import { EntityReference } from '../../../generated/tests/testCase'; import { useApplicationStore } from '../../../hooks/useApplicationStore'; import { FieldProp, FieldTypes } from '../../../interface/FormUtils.interface'; +import { getUsers } from '../../../rest/userAPI'; import { generateFormFields } from '../../../utils/formUtils'; import { TestCaseStatusModalProps } from './TestCaseStatusModal.interface'; @@ -38,13 +46,13 @@ export const TestCaseStatusModal = ({ testCaseFqn, onSubmit, onCancel, - usersList, }: TestCaseStatusModalProps) => { const { t } = useTranslation(); const { currentUser } = useApplicationStore(); const [form] = Form.useForm(); const [isLoading, setIsLoading] = useState(false); const [options, setOptions] = useState([]); + const [usersList, setUsersList] = useState([]); const { assigneeOptions } = useMemo(() => { const initialAssignees = data?.testCaseResolutionStatusDetails?.assignee @@ -155,6 +163,27 @@ export const TestCaseStatusModal = ({ }), [data?.testCaseResolutionStatusDetails?.testCaseFailureComment] ); + const fetchInitialAssign = useCallback(async () => { + try { + const { data } = await getUsers({ + limit: PAGE_SIZE_MEDIUM, + + isBot: false, + }); + const filterData = getEntityReferenceListFromEntities( + data, + EntityType.USER + ); + setUsersList(filterData); + } catch (error) { + setUsersList([]); + } + }, []); + + useEffect(() => { + // fetch users once and store in state + fetchInitialAssign(); + }, []); useEffect(() => { const assignee = data?.testCaseResolutionStatusDetails?.assignee; diff --git a/openmetadata-ui/src/main/resources/ui/src/components/DataQuality/TestCaseStatusModal/TestCaseStatusModal.interface.ts b/openmetadata-ui/src/main/resources/ui/src/components/DataQuality/TestCaseStatusModal/TestCaseStatusModal.interface.ts index 831df681ac6..0ade2bf81d9 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/DataQuality/TestCaseStatusModal/TestCaseStatusModal.interface.ts +++ b/openmetadata-ui/src/main/resources/ui/src/components/DataQuality/TestCaseStatusModal/TestCaseStatusModal.interface.ts @@ -10,7 +10,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { EntityReference } from '../../../generated/entity/type'; import { TestCaseResolutionStatus } from '../../../generated/tests/testCaseResolutionStatus'; export interface TestCaseStatusModalProps { @@ -19,5 +18,4 @@ export interface TestCaseStatusModalProps { testCaseFqn: string; onCancel: () => void; onSubmit: (data: TestCaseResolutionStatus) => void; - usersList?: EntityReference[]; } diff --git a/openmetadata-ui/src/main/resources/ui/src/components/Entity/Task/TaskTab/TaskTab.component.tsx b/openmetadata-ui/src/main/resources/ui/src/components/Entity/Task/TaskTab/TaskTab.component.tsx index 64d6994224a..26e130b1f73 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/Entity/Task/TaskTab/TaskTab.component.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/components/Entity/Task/TaskTab/TaskTab.component.tsx @@ -51,11 +51,15 @@ import { ReactComponent as TaskCloseIcon } from '../../../../assets/svg/ic-close import { ReactComponent as TaskOpenIcon } from '../../../../assets/svg/ic-open-task.svg'; import { ReactComponent as AddColored } from '../../../../assets/svg/plus-colored.svg'; -import { DE_ACTIVE_COLOR } from '../../../../constants/constants'; +import { + DE_ACTIVE_COLOR, + PAGE_SIZE_MEDIUM, +} from '../../../../constants/constants'; import { TaskOperation } from '../../../../constants/Feeds.constants'; import { TASK_TYPES } from '../../../../constants/Task.constant'; import { usePermissionProvider } from '../../../../context/PermissionProvider/PermissionProvider'; import { ResourceEntity } from '../../../../context/PermissionProvider/PermissionProvider.interface'; +import { EntityType } from '../../../../enums/entity.enum'; import { TaskType } from '../../../../generated/api/feed/createThread'; import { ResolveTask } from '../../../../generated/api/feed/resolveTask'; import { CreateTestCaseResolutionStatus } from '../../../../generated/api/tests/createTestCaseResolutionStatus'; @@ -64,6 +68,7 @@ import { ThreadTaskStatus, } from '../../../../generated/entity/feed/thread'; import { Operation } from '../../../../generated/entity/policies/policy'; +import { EntityReference } from '../../../../generated/tests/testCase'; import { TestCaseFailureReasonType, TestCaseResolutionStatusTypes, @@ -85,8 +90,10 @@ import { } from '../../../../pages/TasksPage/TasksPage.interface'; import { updateTask, updateThread } from '../../../../rest/feedsAPI'; import { postTestCaseIncidentStatus } from '../../../../rest/incidentManagerAPI'; +import { getUsers } from '../../../../rest/userAPI'; import { getNameFromFQN } from '../../../../utils/CommonUtils'; import EntityLink from '../../../../utils/EntityLink'; +import { getEntityReferenceListFromEntities } from '../../../../utils/EntityUtils'; import { getEntityFQN } from '../../../../utils/FeedUtils'; import { getField } from '../../../../utils/formUtils'; import { checkPermission } from '../../../../utils/PermissionsUtils'; @@ -149,7 +156,6 @@ export const TaskTab = ({ fetchUpdatedThread, updateTestCaseIncidentStatus, testCaseResolutionStatus, - initialAssignees: usersList, } = useActivityFeedProvider(); const isTaskDescription = isDescriptionTask(taskDetails?.type as TaskType); @@ -227,6 +233,7 @@ export const TaskTab = ({ noSuggestionTaskMenuOptions, ]); + const [usersList, setUsersList] = useState([]); const [taskAction, setTaskAction] = useState(latestAction); const [isActionLoading, setIsActionLoading] = useState(false); const isTaskClosed = isEqual(taskDetails?.status, ThreadTaskStatus.Closed); @@ -804,6 +811,30 @@ export const TaskTab = ({ } }; + const fetchInitialAssign = useCallback(async () => { + try { + const { data } = await getUsers({ + limit: PAGE_SIZE_MEDIUM, + + isBot: false, + }); + const filterData = getEntityReferenceListFromEntities( + data, + EntityType.USER + ); + setUsersList(filterData); + } catch (error) { + setUsersList([]); + } + }, []); + + useEffect(() => { + // fetch users only when the task is a test case result and the assignees are getting edited + if (isTaskTestCaseResult && isEmpty(usersList) && isEditAssignee) { + fetchInitialAssign(); + } + }, [isTaskTestCaseResult, usersList, isEditAssignee]); + useEffect(() => { assigneesForm.setFieldValue('assignees', initialAssignees); setOptions(assigneeOptions); diff --git a/openmetadata-ui/src/main/resources/ui/src/components/Entity/Task/TaskTab/TaskTabNew.component.tsx b/openmetadata-ui/src/main/resources/ui/src/components/Entity/Task/TaskTab/TaskTabNew.component.tsx index e0a2a77a0f8..343be67af1b 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/Entity/Task/TaskTab/TaskTabNew.component.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/components/Entity/Task/TaskTab/TaskTabNew.component.tsx @@ -55,7 +55,10 @@ import { ReactComponent as TaskOpenIcon } from '../../../../assets/svg/ic-open-t import { ReactComponent as UserIcon } from '../../../../assets/svg/ic-user-profile.svg'; import { ReactComponent as AddColored } from '../../../../assets/svg/plus-colored.svg'; -import { DE_ACTIVE_COLOR } from '../../../../constants/constants'; +import { + DE_ACTIVE_COLOR, + PAGE_SIZE_MEDIUM, +} from '../../../../constants/constants'; import { TaskOperation } from '../../../../constants/Feeds.constants'; import { TASK_TYPES } from '../../../../constants/Task.constant'; import { usePermissionProvider } from '../../../../context/PermissionProvider/PermissionProvider'; @@ -114,7 +117,13 @@ import ActivityFeedEditorNew from '../../../ActivityFeed/ActivityFeedEditor/Acti import { useActivityFeedProvider } from '../../../ActivityFeed/ActivityFeedProvider/ActivityFeedProvider'; import InlineEdit from '../../../common/InlineEdit/InlineEdit.component'; -import { getEntityName } from '../../../../utils/EntityUtils'; +import { EntityType } from '../../../../enums/entity.enum'; +import { EntityReference } from '../../../../generated/tests/testCase'; +import { getUsers } from '../../../../rest/userAPI'; +import { + getEntityName, + getEntityReferenceListFromEntities, +} from '../../../../utils/EntityUtils'; import { UserAvatarGroup } from '../../../common/OwnerLabel/UserAvatarGroup.component'; import EntityPopOverCard from '../../../common/PopOverCard/EntityPopOverCard'; import ProfilePictureNew from '../../../common/ProfilePicture/ProfilePictureNew'; @@ -156,7 +165,6 @@ export const TaskTabNew = ({ fetchUpdatedThread, updateTestCaseIncidentStatus, testCaseResolutionStatus, - initialAssignees: usersList, } = useActivityFeedProvider(); const isTaskDescription = isDescriptionTask(taskDetails?.type as TaskType); @@ -234,6 +242,7 @@ export const TaskTabNew = ({ noSuggestionTaskMenuOptions, ]); + const [usersList, setUsersList] = useState([]); const [taskAction, setTaskAction] = useState(latestAction); const [isActionLoading, setIsActionLoading] = useState(false); const isTaskClosed = isEqual(taskDetails?.status, ThreadTaskStatus.Closed); @@ -817,6 +826,30 @@ export const TaskTabNew = ({ } }; + const fetchInitialAssign = useCallback(async () => { + try { + const { data } = await getUsers({ + limit: PAGE_SIZE_MEDIUM, + + isBot: false, + }); + const filterData = getEntityReferenceListFromEntities( + data, + EntityType.USER + ); + setUsersList(filterData); + } catch (error) { + setUsersList([]); + } + }, []); + + useEffect(() => { + // fetch users only when the task is a test case result and the assignees are getting edited + if (isTaskTestCaseResult && isEmpty(usersList) && isEditAssignee) { + fetchInitialAssign(); + } + }, [isTaskTestCaseResult, usersList, isEditAssignee]); + useEffect(() => { assigneesForm.setFieldValue('assignees', initialAssignees); setOptions(assigneeOptions); diff --git a/openmetadata-ui/src/main/resources/ui/src/components/IncidentManager/IncidentManager.component.tsx b/openmetadata-ui/src/main/resources/ui/src/components/IncidentManager/IncidentManager.component.tsx index 0904593fe17..b1b831af75a 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/IncidentManager/IncidentManager.component.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/components/IncidentManager/IncidentManager.component.tsx @@ -21,7 +21,7 @@ import React, { useCallback, useEffect, useMemo, useState } from 'react'; import { useTranslation } from 'react-i18next'; import { Link, useHistory } from 'react-router-dom'; import { WILD_CARD_CHAR } from '../../constants/char.constants'; -import { PAGE_SIZE_BASE, PAGE_SIZE_MEDIUM } from '../../constants/constants'; +import { PAGE_SIZE_BASE } from '../../constants/constants'; import { PROFILER_FILTER_RANGE } from '../../constants/profiler.constant'; import { usePermissionProvider } from '../../context/PermissionProvider/PermissionProvider'; import { ResourceEntity } from '../../context/PermissionProvider/PermissionProvider.interface'; @@ -51,7 +51,6 @@ import { } from '../../rest/incidentManagerAPI'; import { getUserAndTeamSearch } from '../../rest/miscAPI'; import { searchQuery } from '../../rest/searchAPI'; -import { getUsers } from '../../rest/userAPI'; import { getNameFromFQN, getPartialNameFromTableFQN, @@ -63,10 +62,7 @@ import { getEpochMillisForPastDays, getStartOfDayInMillis, } from '../../utils/date-time/DateTimeUtils'; -import { - getEntityName, - getEntityReferenceListFromEntities, -} from '../../utils/EntityUtils'; +import { getEntityName } from '../../utils/EntityUtils'; import { getEntityDetailsPath, getIncidentManagerDetailPagePath, @@ -134,9 +130,6 @@ const IncidentManager = ({ const { getEntityPermissionByFqn, permissions } = usePermissionProvider(); const { testCase: commonTestCasePermission } = permissions; - const [initialAssignees, setInitialAssignees] = useState( - [] - ); const [isPermissionLoading, setIsPermissionLoading] = useState(true); const [testCasePermissions, setTestCasePermissions] = useState< TestCasePermission[] @@ -361,28 +354,6 @@ const IncidentManager = ({ } }; - const fetchInitialAssign = useCallback(async () => { - try { - const { data } = await getUsers({ - limit: PAGE_SIZE_MEDIUM, - - isBot: false, - }); - const filterData = getEntityReferenceListFromEntities( - data, - EntityType.USER - ); - setInitialAssignees(filterData); - } catch (error) { - setInitialAssignees([]); - } - }, []); - - useEffect(() => { - // fetch users once and store in state - fetchInitialAssign(); - }, []); - useEffect(() => { if ( commonTestCasePermission?.ViewAll || @@ -493,7 +464,6 @@ const IncidentManager = ({ ); @@ -537,12 +507,7 @@ const IncidentManager = ({ ), }, ], - [ - testCaseListData.data, - initialAssignees, - testCasePermissions, - isPermissionLoading, - ] + [testCaseListData.data, testCasePermissions, isPermissionLoading] ); if (