From 3141a0ffc4c96c6a0c6015d8e853c6da5e20bd84 Mon Sep 17 00:00:00 2001 From: "marta.sudol" Date: Wed, 30 Apr 2025 13:00:10 +0200 Subject: [PATCH 1/2] fix: reduced unnecessary API calls on workspace features --- src/pages/workspace/WorkspaceMembersPage.tsx | 10 ++++++---- .../reportFields/WorkspaceReportFieldsPage.tsx | 6 ++++-- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/pages/workspace/WorkspaceMembersPage.tsx b/src/pages/workspace/WorkspaceMembersPage.tsx index fbfc13556748..c4c79aff0a35 100644 --- a/src/pages/workspace/WorkspaceMembersPage.tsx +++ b/src/pages/workspace/WorkspaceMembersPage.tsx @@ -177,14 +177,16 @@ function WorkspaceMembersPage({personalDetails, route, policy, currentUserPerson // eslint-disable-next-line react-compiler/react-compiler, react-hooks/exhaustive-deps }, [selectedEmployees, policy?.owner, session?.accountID]); - // useFocus would make getWorkspaceMembers get called twice on fresh login because policyEmployee is a dependency of getWorkspaceMembers. + // Fetch members only once when the component mounts, like in Categories page + useEffect(() => { + getWorkspaceMembers(); + }, [getWorkspaceMembers]); + + // Clear selected employees when losing focus useEffect(() => { if (!isFocused) { setSelectedEmployees([]); - return; } - getWorkspaceMembers(); - // eslint-disable-next-line react-compiler/react-compiler, react-hooks/exhaustive-deps }, [isFocused]); useEffect(() => { diff --git a/src/pages/workspace/reportFields/WorkspaceReportFieldsPage.tsx b/src/pages/workspace/reportFields/WorkspaceReportFieldsPage.tsx index e385646a1e98..9e72720a85a8 100644 --- a/src/pages/workspace/reportFields/WorkspaceReportFieldsPage.tsx +++ b/src/pages/workspace/reportFields/WorkspaceReportFieldsPage.tsx @@ -1,4 +1,4 @@ -import {useFocusEffect, useIsFocused} from '@react-navigation/native'; +import {useIsFocused} from '@react-navigation/native'; import {Str} from 'expensify-common'; import React, {useCallback, useEffect, useMemo, useState} from 'react'; import {ActivityIndicator, View} from 'react-native'; @@ -101,7 +101,9 @@ function WorkspaceReportFieldsPage({ const hasVisibleReportField = Object.values(filteredPolicyFieldList).some((reportField) => reportField.pendingAction !== CONST.RED_BRICK_ROAD_PENDING_ACTION.DELETE || isOffline); - useFocusEffect(fetchReportFields); + useEffect(() => { + fetchReportFields(); + }, [fetchReportFields]); useEffect(() => { if (isFocused) { From 05d36d6a44c4076516a8d5c677df564f0b5e6d5b Mon Sep 17 00:00:00 2001 From: "marta.sudol" Date: Wed, 30 Apr 2025 13:09:29 +0200 Subject: [PATCH 2/2] ESLint fixes --- src/pages/workspace/WorkspaceMembersPage.tsx | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/pages/workspace/WorkspaceMembersPage.tsx b/src/pages/workspace/WorkspaceMembersPage.tsx index c4c79aff0a35..e829bddebef8 100644 --- a/src/pages/workspace/WorkspaceMembersPage.tsx +++ b/src/pages/workspace/WorkspaceMembersPage.tsx @@ -184,9 +184,10 @@ function WorkspaceMembersPage({personalDetails, route, policy, currentUserPerson // Clear selected employees when losing focus useEffect(() => { - if (!isFocused) { - setSelectedEmployees([]); + if (isFocused) { + return; } + setSelectedEmployees([]); }, [isFocused]); useEffect(() => {