diff --git a/src/pages/ReportParticipantsPage.tsx b/src/pages/ReportParticipantsPage.tsx index f635499a286f..f6415ae9fa7d 100755 --- a/src/pages/ReportParticipantsPage.tsx +++ b/src/pages/ReportParticipantsPage.tsx @@ -1,4 +1,5 @@ -import React, {useCallback, useMemo, useRef, useState} from 'react'; +import {useIsFocused} from '@react-navigation/native'; +import React, {useCallback, useEffect, useMemo, useRef, useState} from 'react'; import {InteractionManager, View} from 'react-native'; import type {TextInput} from 'react-native'; import type {OnyxEntry} from 'react-native-onyx'; @@ -58,6 +59,14 @@ function ReportParticipantsPage({report, personalDetails, session}: ReportPartic const currentUserAccountID = Number(session?.accountID); const isCurrentUserAdmin = ReportUtils.isGroupChatAdmin(report, currentUserAccountID); const isGroupChat = useMemo(() => ReportUtils.isGroupChat(report), [report]); + const isFocused = useIsFocused(); + + useEffect(() => { + if (isFocused) { + return; + } + setSelectedMembers([]); + }, [isFocused]); const getUsers = useCallback((): MemberOption[] => { let result: MemberOption[] = []; diff --git a/src/pages/workspace/WorkspaceMembersPage.tsx b/src/pages/workspace/WorkspaceMembersPage.tsx index dfaf50c0bcf6..a66a8dd74cce 100644 --- a/src/pages/workspace/WorkspaceMembersPage.tsx +++ b/src/pages/workspace/WorkspaceMembersPage.tsx @@ -138,6 +138,7 @@ function WorkspaceMembersPage({policyMembers, personalDetails, invitedEmailsToAc // useFocusEffect would make getWorkspaceMembers get called twice on fresh login because policyMember is a dependency of getWorkspaceMembers. useEffect(() => { if (!isFocused) { + setSelectedEmployees([]); return; } getWorkspaceMembers(); diff --git a/src/pages/workspace/categories/WorkspaceCategoriesPage.tsx b/src/pages/workspace/categories/WorkspaceCategoriesPage.tsx index 5c2dbe6de352..80394623dba8 100644 --- a/src/pages/workspace/categories/WorkspaceCategoriesPage.tsx +++ b/src/pages/workspace/categories/WorkspaceCategoriesPage.tsx @@ -1,6 +1,6 @@ -import {useFocusEffect} from '@react-navigation/native'; +import {useFocusEffect, useIsFocused} from '@react-navigation/native'; import type {StackScreenProps} from '@react-navigation/stack'; -import React, {useCallback, useMemo, useRef, useState} from 'react'; +import React, {useCallback, useEffect, useMemo, useRef, useState} from 'react'; import {ActivityIndicator, View} from 'react-native'; import {withOnyx} from 'react-native-onyx'; import type {OnyxEntry} from 'react-native-onyx'; @@ -63,6 +63,7 @@ function WorkspaceCategoriesPage({policy, policyCategories, route}: WorkspaceCat const [selectedCategories, setSelectedCategories] = useState>({}); const dropdownButtonRef = useRef(null); const [deleteCategoriesConfirmModalVisible, setDeleteCategoriesConfirmModalVisible] = useState(false); + const isFocused = useIsFocused(); const fetchCategories = useCallback(() => { Policy.openPolicyCategoriesPage(route.params.policyID); @@ -76,6 +77,13 @@ function WorkspaceCategoriesPage({policy, policyCategories, route}: WorkspaceCat }, [fetchCategories]), ); + useEffect(() => { + if (isFocused) { + return; + } + setSelectedCategories({}); + }, [isFocused]); + const categoryList = useMemo( () => Object.values(policyCategories ?? {}) @@ -119,7 +127,6 @@ function WorkspaceCategoriesPage({policy, policyCategories, route}: WorkspaceCat ); const navigateToCategorySettings = (category: PolicyOption) => { - setSelectedCategories({}); Navigation.navigate(ROUTES.WORKSPACE_CATEGORY_SETTINGS.getRoute(route.params.policyID, category.keyForList)); }; diff --git a/src/pages/workspace/distanceRates/PolicyDistanceRatesPage.tsx b/src/pages/workspace/distanceRates/PolicyDistanceRatesPage.tsx index 37c827ebdf31..ea35526bcdfa 100644 --- a/src/pages/workspace/distanceRates/PolicyDistanceRatesPage.tsx +++ b/src/pages/workspace/distanceRates/PolicyDistanceRatesPage.tsx @@ -1,6 +1,6 @@ -import {useFocusEffect} from '@react-navigation/native'; +import {useFocusEffect, useIsFocused} from '@react-navigation/native'; import type {StackScreenProps} from '@react-navigation/stack'; -import React, {useCallback, useMemo, useRef, useState} from 'react'; +import React, {useCallback, useEffect, useMemo, useRef, useState} from 'react'; import {ActivityIndicator, View} from 'react-native'; import type {OnyxEntry} from 'react-native-onyx'; import {withOnyx} from 'react-native-onyx'; @@ -56,6 +56,7 @@ function PolicyDistanceRatesPage({policy, route}: PolicyDistanceRatesPageProps) const [isDeleteModalVisible, setIsDeleteModalVisible] = useState(false); const dropdownButtonRef = useRef(null); const policyID = route.params.policyID; + const isFocused = useIsFocused(); const customUnit: CustomUnit | undefined = useMemo( () => (policy?.customUnits !== undefined ? policy?.customUnits[Object.keys(policy?.customUnits)[0]] : undefined), @@ -93,6 +94,13 @@ function PolicyDistanceRatesPage({policy, route}: PolicyDistanceRatesPageProps) }, [fetchDistanceRates]), ); + useEffect(() => { + if (isFocused) { + return; + } + setSelectedDistanceRates([]); + }, [isFocused]); + const distanceRatesList = useMemo( () => Object.values(customUnitRates).map((value) => ({ @@ -119,7 +127,6 @@ function PolicyDistanceRatesPage({policy, route}: PolicyDistanceRatesPageProps) }; const openRateDetails = (rate: RateForList) => { - setSelectedDistanceRates([]); Navigation.navigate(ROUTES.WORKSPACE_DISTANCE_RATE_DETAILS.getRoute(policyID, rate.value)); }; diff --git a/src/pages/workspace/tags/WorkspaceTagsPage.tsx b/src/pages/workspace/tags/WorkspaceTagsPage.tsx index eed0015a9aa4..a46e32d5371e 100644 --- a/src/pages/workspace/tags/WorkspaceTagsPage.tsx +++ b/src/pages/workspace/tags/WorkspaceTagsPage.tsx @@ -1,7 +1,7 @@ -import {useFocusEffect} from '@react-navigation/native'; +import {useFocusEffect, useIsFocused} from '@react-navigation/native'; import type {StackScreenProps} from '@react-navigation/stack'; import lodashSortBy from 'lodash/sortBy'; -import React, {useCallback, useMemo, useRef, useState} from 'react'; +import React, {useCallback, useEffect, useMemo, useRef, useState} from 'react'; import {ActivityIndicator, View} from 'react-native'; import {withOnyx} from 'react-native-onyx'; import type {OnyxEntry} from 'react-native-onyx'; @@ -70,6 +70,7 @@ function WorkspaceTagsPage({policyTags, route}: WorkspaceTagsPageProps) { const [selectedTags, setSelectedTags] = useState>({}); const dropdownButtonRef = useRef(null); const [deleteTagsConfirmModalVisible, setDeleteTagsConfirmModalVisible] = useState(false); + const isFocused = useIsFocused(); const fetchTags = useCallback(() => { Policy.openPolicyTagsPage(route.params.policyID); @@ -82,6 +83,14 @@ function WorkspaceTagsPage({policyTags, route}: WorkspaceTagsPageProps) { fetchTags(); }, [fetchTags]), ); + + useEffect(() => { + if (isFocused) { + return; + } + setSelectedTags({}); + }, [isFocused]); + const policyTagLists = useMemo(() => PolicyUtils.getTagLists(policyTags), [policyTags]); const tagList = useMemo( () => @@ -140,7 +149,6 @@ function WorkspaceTagsPage({policyTags, route}: WorkspaceTagsPageProps) { }; const navigateToTagSettings = (tag: PolicyOption) => { - setSelectedTags({}); Navigation.navigate(ROUTES.WORKSPACE_TAG_SETTINGS.getRoute(route.params.policyID, tag.keyForList)); }; diff --git a/src/pages/workspace/taxes/WorkspaceTaxesPage.tsx b/src/pages/workspace/taxes/WorkspaceTaxesPage.tsx index 72680760f08f..a61c8ae72734 100644 --- a/src/pages/workspace/taxes/WorkspaceTaxesPage.tsx +++ b/src/pages/workspace/taxes/WorkspaceTaxesPage.tsx @@ -1,6 +1,6 @@ -import {useFocusEffect} from '@react-navigation/native'; +import {useFocusEffect, useIsFocused} from '@react-navigation/native'; import type {StackScreenProps} from '@react-navigation/stack'; -import React, {useCallback, useMemo, useRef, useState} from 'react'; +import React, {useCallback, useEffect, useMemo, useRef, useState} from 'react'; import {ActivityIndicator, View} from 'react-native'; import Button from '@components/Button'; import ButtonWithDropdownMenu from '@components/ButtonWithDropdownMenu'; @@ -54,6 +54,7 @@ function WorkspaceTaxesPage({ const defaultExternalID = policy?.taxRates?.defaultExternalID; const foreignTaxDefault = policy?.taxRates?.foreignTaxDefault; const dropdownButtonRef = useRef(null); + const isFocused = useIsFocused(); const fetchTaxes = useCallback(() => { openPolicyTaxesPage(policyID); @@ -67,6 +68,13 @@ function WorkspaceTaxesPage({ }, [fetchTaxes]), ); + useEffect(() => { + if (isFocused) { + return; + } + setSelectedTaxesIDs([]); + }, [isFocused]); + const textForDefault = useCallback( (taxID: string, taxRate: TaxRate): string => { let suffix; @@ -162,7 +170,6 @@ function WorkspaceTaxesPage({ if (!taxRate.keyForList) { return; } - setSelectedTaxesIDs([]); Navigation.navigate(ROUTES.WORKSPACE_TAX_EDIT.getRoute(policyID, taxRate.keyForList)); };