diff --git a/src/pages/workspace/WorkspaceInvitePage.tsx b/src/pages/workspace/WorkspaceInvitePage.tsx index ad48d15aa9df..3e63ae7cbe79 100644 --- a/src/pages/workspace/WorkspaceInvitePage.tsx +++ b/src/pages/workspace/WorkspaceInvitePage.tsx @@ -1,8 +1,8 @@ +import {useNavigation} from '@react-navigation/native'; import type {StackScreenProps} from '@react-navigation/stack'; import React, {useCallback, useEffect, useMemo, useRef, useState} from 'react'; import type {SectionListData} from 'react-native'; -import {useOnyx, withOnyx} from 'react-native-onyx'; -import type {OnyxEntry} from 'react-native-onyx'; +import {useOnyx} from 'react-native-onyx'; import FormAlertWithSubmitButton from '@components/FormAlertWithSubmitButton'; import HeaderWithBackButton from '@components/HeaderWithBackButton'; import {useOptionsList} from '@components/OptionListContextProvider'; @@ -34,7 +34,7 @@ import CONST from '@src/CONST'; import ONYXKEYS from '@src/ONYXKEYS'; import ROUTES from '@src/ROUTES'; import type SCREENS from '@src/SCREENS'; -import type {Beta, InvitedEmailsToAccountIDs} from '@src/types/onyx'; +import type {InvitedEmailsToAccountIDs} from '@src/types/onyx'; import type {Errors} from '@src/types/onyx/OnyxCommon'; import {isEmptyObject} from '@src/types/utils/EmptyObject'; import AccessOrNotFoundWrapper from './AccessOrNotFoundWrapper'; @@ -43,22 +43,12 @@ import type {WithPolicyAndFullscreenLoadingProps} from './withPolicyAndFullscree type MembersSection = SectionListData>; -type WorkspaceInvitePageOnyxProps = { - /** Beta features list */ - betas: OnyxEntry; +type WorkspaceInvitePageProps = WithPolicyAndFullscreenLoadingProps & WithNavigationTransitionEndProps & StackScreenProps; - /** An object containing the accountID for every invited user email */ - invitedEmailsToAccountIDsDraft: OnyxEntry; -}; - -type WorkspaceInvitePageProps = WithPolicyAndFullscreenLoadingProps & - WithNavigationTransitionEndProps & - WorkspaceInvitePageOnyxProps & - StackScreenProps; - -function WorkspaceInvitePage({route, betas, invitedEmailsToAccountIDsDraft, policy}: WorkspaceInvitePageProps) { +function WorkspaceInvitePage({route, policy}: WorkspaceInvitePageProps) { const styles = useThemeStyles(); const {translate} = useLocalize(); + const navigation = useNavigation(); const [searchTerm, debouncedSearchTerm, setSearchTerm] = useDebouncedState(''); const [selectedOptions, setSelectedOptions] = useState([]); const [personalDetails, setPersonalDetails] = useState([]); @@ -66,6 +56,8 @@ function WorkspaceInvitePage({route, betas, invitedEmailsToAccountIDsDraft, poli const [didScreenTransitionEnd, setDidScreenTransitionEnd] = useState(false); const [isSearchingForReports] = useOnyx(ONYXKEYS.IS_SEARCHING_FOR_REPORTS, {initWithStoredValues: false}); const firstRenderRef = useRef(true); + const [betas] = useOnyx(ONYXKEYS.BETAS); + const [invitedEmailsToAccountIDsDraft] = useOnyx(`${ONYXKEYS.COLLECTION.WORKSPACE_INVITE_MEMBERS_DRAFT}${route.params.policyID.toString()}`); const openWorkspaceInvitePage = () => { const policyMemberEmailsToAccountIDs = PolicyUtils.getMemberAccountIDsForWorkspace(policy?.employeeList); @@ -76,11 +68,12 @@ function WorkspaceInvitePage({route, betas, invitedEmailsToAccountIDsDraft, poli }); useEffect(() => { - return () => { + const unsubscribe = navigation.addListener('beforeRemove', () => { Member.setWorkspaceInviteMembersDraft(route.params.policyID, {}); - }; - // eslint-disable-next-line react-compiler/react-compiler, react-hooks/exhaustive-deps - }, [route.params.policyID]); + }); + + return unsubscribe; + }, [navigation, route.params.policyID]); useEffect(() => { Policy.clearErrors(route.params.policyID); @@ -354,15 +347,4 @@ function WorkspaceInvitePage({route, betas, invitedEmailsToAccountIDsDraft, poli WorkspaceInvitePage.displayName = 'WorkspaceInvitePage'; -export default withNavigationTransitionEnd( - withPolicyAndFullscreenLoading( - withOnyx({ - betas: { - key: ONYXKEYS.BETAS, - }, - invitedEmailsToAccountIDsDraft: { - key: ({route}) => `${ONYXKEYS.COLLECTION.WORKSPACE_INVITE_MEMBERS_DRAFT}${route.params.policyID.toString()}`, - }, - })(WorkspaceInvitePage), - ), -); +export default withNavigationTransitionEnd(withPolicyAndFullscreenLoading(WorkspaceInvitePage));