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,42 +23,42 @@ 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+ shouldUseNarrowLayout,
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 engagementChoice =
7264 onboardingPurposeSelected === CONST . ONBOARDING_CHOICES . TRACK_PERSONAL ? CONST . ONBOARDING_CHOICES . TRACK_PERSONAL : CONST . ONBOARDING_CHOICES . TRACK_WORKSPACE ;
@@ -75,16 +67,16 @@ function useAutoCreateTrackWorkspace() {
7567 ? createWorkspace ( {
7668 policyOwnerEmail : undefined ,
7769 makeMeAdmin : true ,
78- policyName : generateDefaultWorkspaceName ( session ?. email ?? '' , lastWorkspaceNumber , translate , displayName ) ,
70+ policyName : generateDefaultWorkspaceName ( currentUserEmail , lastWorkspaceNumber , translate , displayName ) ,
7971 policyID : generatePolicyID ( ) ,
8072 engagementChoice,
81- currency : currentUserPersonalDetails . localCurrencyCode ?? CONST . CURRENCY . USD ,
73+ currency : localCurrencyCode ,
8274 file : undefined ,
8375 shouldAddOnboardingTasks : false ,
8476 introSelected,
8577 activePolicy,
86- currentUserAccountIDParam : session ?. accountID ?? CONST . DEFAULT_NUMBER_ID ,
87- currentUserEmailParam : session ?. email ?? '' ,
78+ currentUserAccountIDParam : currentUserAccountID ,
79+ currentUserEmailParam : currentUserEmail ,
8880 shouldAddGuideWelcomeMessage : false ,
8981 onboardingPurposeSelected,
9082 betas,
@@ -126,7 +118,7 @@ function useAutoCreateTrackWorkspace() {
126118 setOnboardingPolicyID ( ) ;
127119
128120 navigateAfterOnboardingWithMicrotaskQueue (
129- isSmallScreenWidth ,
121+ shouldUseNarrowLayout ,
130122 isBetaEnabled ( CONST . BETAS . DEFAULT_ROOMS ) ,
131123 conciergeChatReportID ,
132124 archivedReportsIdSet ,
@@ -138,23 +130,23 @@ function useAutoCreateTrackWorkspace() {
138130 }
139131 } ,
140132 [
141- session ?. email ,
142- session ?. accountID ,
133+ currentUserEmail ,
134+ currentUserAccountID ,
143135 lastWorkspaceNumber ,
144136 translate ,
145137 formatPhoneNumber ,
146138 isRestrictedPolicyCreation ,
147139 onboardingPolicyID ,
148140 hasPaidGroupAdminPolicy ,
149141 onboardingAdminsChatReportID ,
150- currentUserPersonalDetails . localCurrencyCode ,
142+ localCurrencyCode ,
151143 introSelected ,
152144 activePolicy ,
153145 isSelfTourViewed ,
154146 onboardingMessages ,
155147 betas ,
156148 hasActiveAdminPolicies ,
157- isSmallScreenWidth ,
149+ shouldUseNarrowLayout ,
158150 isBetaEnabled ,
159151 conciergeChatReportID ,
160152 archivedReportsIdSet ,
0 commit comments