1+ import { hasSeenTourSelector } from '@selectors/Onboarding' ;
12import { useCallback , useMemo } from 'react' ;
23import type { OnyxCollection } from 'react-native-onyx' ;
34import isSidePanelReportSupported from '@components/SidePanel/isSidePanelReportSupported' ;
@@ -11,10 +12,17 @@ import {setOnboardingAdminsChatReportID, setOnboardingPolicyID} from '@userActio
1112import CONST from '@src/CONST' ;
1213import ONYXKEYS from '@src/ONYXKEYS' ;
1314import type { OnboardingPurpose , OnboardingRHPVariant , Policy } from '@src/types/onyx' ;
15+ import useActivePolicy from './useActivePolicy' ;
1416import useArchivedReportsIdSet from './useArchivedReportsIdSet' ;
15- import useOnboardingWorkspaceCreationState from './useOnboardingWorkspaceCreationState' ;
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' ;
1622import useOnyx from './useOnyx' ;
1723import usePermissions from './usePermissions' ;
24+ import usePreferredPolicy from './usePreferredPolicy' ;
25+ import useResponsiveLayout from './useResponsiveLayout' ;
1826
1927/**
2028 * Hook that provides a function to auto-create a workspace for Track (PERSONAL_SPEND)
@@ -23,57 +31,57 @@ import usePermissions from './usePermissions';
2331 * Shared by BaseOnboardingPersonalDetails and BaseOnboardingPurpose.
2432 */
2533function useAutoCreateTrackWorkspace ( ) {
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-
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 ) ;
4540 const paidGroupPolicySelector = useMemo (
46- ( ) => ( policies : OnyxCollection < Policy > ) => Object . values ( policies ?? { } ) . some ( ( policy ) => isPaidGroupPolicy ( policy ) && isPolicyAdmin ( policy , currentUserEmail ) ) ,
47- [ currentUserEmail ] ,
41+ ( ) => ( policies : OnyxCollection < Policy > ) => Object . values ( policies ?? { } ) . some ( ( policy ) => isPaidGroupPolicy ( policy ) && isPolicyAdmin ( policy , session ?. email ) ) ,
42+ [ session ?. email ] ,
4843 ) ;
4944 const [ hasPaidGroupAdminPolicy ] = useOnyx ( ONYXKEYS . COLLECTION . POLICY , { selector : paidGroupPolicySelector } ) ;
50-
5145 const [ conciergeChatReportID = '' ] = useOnyx ( ONYXKEYS . CONCIERGE_REPORT_ID ) ;
5246 const [ onboardingValues ] = useOnyx ( ONYXKEYS . NVP_ONBOARDING ) ;
47+ const currentUserPersonalDetails = useCurrentUserPersonalDetails ( ) ;
5348 const archivedReportsIdSet = useArchivedReportsIdSet ( ) ;
5449 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 ( ) ;
5563
5664 const mergedAccountConciergeReportID = ! onboardingValues ?. shouldRedirectToClassicAfterMerge && onboardingValues ?. shouldValidate ? conciergeChatReportID : undefined ;
5765
5866 const autoCreateTrackWorkspace = useCallback (
5967 async ( firstName : string , lastName : string , onboardingPurposeSelected : OnboardingPurpose ) => {
6068 const shouldCreateWorkspace = ! isRestrictedPolicyCreation && ! onboardingPolicyID && ! hasPaidGroupAdminPolicy ;
61- const displayName = createDisplayName ( currentUserEmail , { firstName, lastName} , formatPhoneNumber ) ;
69+ const displayName = createDisplayName ( session ?. email ?? '' , { firstName, lastName} , formatPhoneNumber ) ;
6270
6371 const { adminsChatReportID : newAdminsChatReportID , policyID : newPolicyID } = shouldCreateWorkspace
6472 ? createWorkspace ( {
6573 policyOwnerEmail : undefined ,
6674 makeMeAdmin : true ,
67- policyName : generateDefaultWorkspaceName ( currentUserEmail , lastWorkspaceNumber , translate , displayName ) ,
75+ policyName : generateDefaultWorkspaceName ( session ?. email ?? '' , lastWorkspaceNumber , translate , displayName ) ,
6876 policyID : generatePolicyID ( ) ,
6977 engagementChoice : CONST . ONBOARDING_CHOICES . TRACK_WORKSPACE ,
70- currency : localCurrencyCode ,
78+ currency : currentUserPersonalDetails . localCurrencyCode ?? CONST . CURRENCY . USD ,
7179 file : undefined ,
7280 shouldAddOnboardingTasks : false ,
7381 introSelected,
7482 activePolicy,
75- currentUserAccountIDParam : currentUserAccountID ,
76- currentUserEmailParam : currentUserEmail ,
83+ currentUserAccountIDParam : session ?. accountID ?? CONST . DEFAULT_NUMBER_ID ,
84+ currentUserEmailParam : session ?. email ?? '' ,
7785 shouldAddGuideWelcomeMessage : false ,
7886 onboardingPurposeSelected,
7987 betas,
@@ -121,16 +129,16 @@ function useAutoCreateTrackWorkspace() {
121129 }
122130 } ,
123131 [
124- currentUserEmail ,
125- currentUserAccountID ,
132+ session ?. email ,
133+ session ?. accountID ,
126134 lastWorkspaceNumber ,
127135 translate ,
128136 formatPhoneNumber ,
129137 isRestrictedPolicyCreation ,
130138 onboardingPolicyID ,
131139 hasPaidGroupAdminPolicy ,
132140 onboardingAdminsChatReportID ,
133- localCurrencyCode ,
141+ currentUserPersonalDetails . localCurrencyCode ,
134142 introSelected ,
135143 activePolicy ,
136144 isSelfTourViewed ,
0 commit comments