1- import { hasSeenTourSelector } from '@selectors/Onboarding' ;
21import { useCallback , useMemo } from 'react' ;
32import type { OnyxCollection } from 'react-native-onyx' ;
43import isSidePanelReportSupported from '@components/SidePanel/isSidePanelReportSupported' ;
@@ -12,17 +11,10 @@ import {setOnboardingAdminsChatReportID, setOnboardingPolicyID} from '@userActio
1211import CONST from '@src/CONST' ;
1312import ONYXKEYS from '@src/ONYXKEYS' ;
1413import type { OnboardingPurpose , OnboardingRHPVariant , Policy } from '@src/types/onyx' ;
15- import useActivePolicy from './useActivePolicy' ;
1614import useArchivedReportsIdSet from './useArchivedReportsIdSet' ;
17- import useCurrentUserPersonalDetails from './useCurrentUserPersonalDetails' ;
18- import useHasActiveAdminPolicies from './useHasActiveAdminPolicies' ;
19- import useLastWorkspaceNumber from './useLastWorkspaceNumber' ;
20- import useLocalize from './useLocalize' ;
21- import useOnboardingMessages from './useOnboardingMessages' ;
15+ import useOnboardingWorkspaceCreationState from './useOnboardingWorkspaceCreationState' ;
2216import useOnyx from './useOnyx' ;
2317import usePermissions from './usePermissions' ;
24- import usePreferredPolicy from './usePreferredPolicy' ;
25- import useResponsiveLayout from './useResponsiveLayout' ;
2618
2719/**
2820 * Hook that provides a function to auto-create a workspace for Track (PERSONAL_SPEND)
@@ -31,57 +23,57 @@ import useResponsiveLayout from './useResponsiveLayout';
3123 * Shared by BaseOnboardingPersonalDetails and BaseOnboardingPurpose.
3224 */
3325function useAutoCreateTrackWorkspace ( ) {
34- const [ onboardingPolicyID ] = useOnyx ( ONYXKEYS . ONBOARDING_POLICY_ID ) ;
35- const [ onboardingAdminsChatReportID ] = useOnyx ( ONYXKEYS . ONBOARDING_ADMINS_CHAT_REPORT_ID ) ;
36- const [ introSelected ] = useOnyx ( ONYXKEYS . NVP_INTRO_SELECTED ) ;
37- const [ isSelfTourViewed ] = useOnyx ( ONYXKEYS . NVP_ONBOARDING , { selector : hasSeenTourSelector } ) ;
38- const [ betas ] = useOnyx ( ONYXKEYS . BETAS ) ;
39- const [ session ] = useOnyx ( ONYXKEYS . SESSION ) ;
26+ const {
27+ onboardingPolicyID,
28+ onboardingAdminsChatReportID,
29+ introSelected,
30+ isSelfTourViewed,
31+ betas,
32+ currentUserEmail,
33+ currentUserAccountID,
34+ localCurrencyCode,
35+ activePolicy,
36+ translate,
37+ formatPhoneNumber,
38+ isRestrictedPolicyCreation,
39+ hasActiveAdminPolicies,
40+ onboardingMessages,
41+ lastWorkspaceNumber,
42+ isSmallScreenWidth,
43+ } = useOnboardingWorkspaceCreationState ( ) ;
44+
4045 const paidGroupPolicySelector = useMemo (
41- ( ) => ( policies : OnyxCollection < Policy > ) => Object . values ( policies ?? { } ) . some ( ( policy ) => isPaidGroupPolicy ( policy ) && isPolicyAdmin ( policy , session ?. email ) ) ,
42- [ session ?. email ] ,
46+ ( ) => ( policies : OnyxCollection < Policy > ) => Object . values ( policies ?? { } ) . some ( ( policy ) => isPaidGroupPolicy ( policy ) && isPolicyAdmin ( policy , currentUserEmail ) ) ,
47+ [ currentUserEmail ] ,
4348 ) ;
4449 const [ hasPaidGroupAdminPolicy ] = useOnyx ( ONYXKEYS . COLLECTION . POLICY , { selector : paidGroupPolicySelector } ) ;
50+
4551 const [ conciergeChatReportID = '' ] = useOnyx ( ONYXKEYS . CONCIERGE_REPORT_ID ) ;
4652 const [ onboardingValues ] = useOnyx ( ONYXKEYS . NVP_ONBOARDING ) ;
47- const currentUserPersonalDetails = useCurrentUserPersonalDetails ( ) ;
4853 const archivedReportsIdSet = useArchivedReportsIdSet ( ) ;
4954 const { isBetaEnabled} = usePermissions ( ) ;
50- const { translate, formatPhoneNumber} = useLocalize ( ) ;
51- const activePolicy = useActivePolicy ( ) ;
52- const { isRestrictedPolicyCreation} = usePreferredPolicy ( ) ;
53- const hasActiveAdminPolicies = useHasActiveAdminPolicies ( ) ;
54- const lastWorkspaceNumber = useLastWorkspaceNumber ( ) ;
55- const { onboardingMessages} = useOnboardingMessages ( ) ;
56-
57- // We use isSmallScreenWidth instead of shouldUseNarrowLayout because navigateAfterOnboarding
58- // relies on actual device screen width to handle navigation stack differences: on small screens,
59- // removing OnboardingModalNavigator redirects to HOME, requiring explicit navigation to the last
60- // accessed report. This behavior is tied to screen size, not responsive layout mode.
61- // eslint-disable-next-line rulesdir/prefer-shouldUseNarrowLayout-instead-of-isSmallScreenWidth
62- const { isSmallScreenWidth} = useResponsiveLayout ( ) ;
6355
6456 const mergedAccountConciergeReportID = ! onboardingValues ?. shouldRedirectToClassicAfterMerge && onboardingValues ?. shouldValidate ? conciergeChatReportID : undefined ;
6557
6658 const autoCreateTrackWorkspace = useCallback (
6759 async ( firstName : string , lastName : string , onboardingPurposeSelected : OnboardingPurpose ) => {
6860 const shouldCreateWorkspace = ! isRestrictedPolicyCreation && ! onboardingPolicyID && ! hasPaidGroupAdminPolicy ;
69- const displayName = createDisplayName ( session ?. email ?? '' , { firstName, lastName} , formatPhoneNumber ) ;
61+ const displayName = createDisplayName ( currentUserEmail , { firstName, lastName} , formatPhoneNumber ) ;
7062
7163 const { adminsChatReportID : newAdminsChatReportID , policyID : newPolicyID } = shouldCreateWorkspace
7264 ? createWorkspace ( {
7365 policyOwnerEmail : undefined ,
7466 makeMeAdmin : true ,
75- policyName : generateDefaultWorkspaceName ( session ?. email ?? '' , lastWorkspaceNumber , translate , displayName ) ,
67+ policyName : generateDefaultWorkspaceName ( currentUserEmail , lastWorkspaceNumber , translate , displayName ) ,
7668 policyID : generatePolicyID ( ) ,
7769 engagementChoice : CONST . ONBOARDING_CHOICES . TRACK_WORKSPACE ,
78- currency : currentUserPersonalDetails . localCurrencyCode ?? CONST . CURRENCY . USD ,
70+ currency : localCurrencyCode ,
7971 file : undefined ,
8072 shouldAddOnboardingTasks : false ,
8173 introSelected,
8274 activePolicy,
83- currentUserAccountIDParam : session ?. accountID ?? CONST . DEFAULT_NUMBER_ID ,
84- currentUserEmailParam : session ?. email ?? '' ,
75+ currentUserAccountIDParam : currentUserAccountID ,
76+ currentUserEmailParam : currentUserEmail ,
8577 shouldAddGuideWelcomeMessage : false ,
8678 onboardingPurposeSelected,
8779 betas,
@@ -129,16 +121,16 @@ function useAutoCreateTrackWorkspace() {
129121 }
130122 } ,
131123 [
132- session ?. email ,
133- session ?. accountID ,
124+ currentUserEmail ,
125+ currentUserAccountID ,
134126 lastWorkspaceNumber ,
135127 translate ,
136128 formatPhoneNumber ,
137129 isRestrictedPolicyCreation ,
138130 onboardingPolicyID ,
139131 hasPaidGroupAdminPolicy ,
140132 onboardingAdminsChatReportID ,
141- currentUserPersonalDetails . localCurrencyCode ,
133+ localCurrencyCode ,
142134 introSelected ,
143135 activePolicy ,
144136 isSelfTourViewed ,
0 commit comments