Skip to content

Commit 618f431

Browse files
committed
Revert "Merge pull request Expensify#87283 from abzokhattab/akhattab/87261-submit-workspace-onboarding"
This reverts commit 960631a, reversing changes made to 8526bac.
1 parent 8ef84fc commit 618f431

44 files changed

Lines changed: 100 additions & 1321 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

src/CONST/index.ts

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -887,7 +887,6 @@ const CONST = {
887887
BULK_DUPLICATE_REPORT: 'bulkDuplicateReport',
888888
BULK_EDIT: 'bulkEdit',
889889
NEW_MANUAL_EXPENSE_FLOW: 'newManualExpenseFlow',
890-
SUBMIT_2026: 'submit2026',
891890
BULK_SUBMIT_APPROVE_PAY: 'bulkSubmitApprovePay',
892891
},
893892
BUTTON_STATES: {
@@ -3518,8 +3517,6 @@ const CONST = {
35183517

35193518
// Often referred to as "collect" workspaces
35203519
TEAM: 'team',
3521-
3522-
SUBMIT: 'submit2026',
35233520
},
35243521
RULE_CONDITIONS: {
35253522
MATCHES: 'matches',
@@ -3538,7 +3535,6 @@ const CONST = {
35383535
ADMIN: 'admin',
35393536
AUDITOR: 'auditor',
35403537
USER: 'user',
3541-
EDITOR: 'editor',
35423538
},
35433539
AUTO_REIMBURSEMENT_MAX_LIMIT_CENTS: 2000000,
35443540

src/components/SidePanel/SidePanelContextProvider.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import useWindowDimensions from '@hooks/useWindowDimensions';
1010
import SidePanelActions from '@libs/actions/SidePanel';
1111
import DateUtils from '@libs/DateUtils';
1212
import focusComposerWithDelay from '@libs/focusComposerWithDelay';
13-
import {canEditWorkspaceSettings, shouldShowPolicy} from '@libs/PolicyUtils';
13+
import {isPolicyAdmin, shouldShowPolicy} from '@libs/PolicyUtils';
1414
import ReportActionComposeFocusManager from '@libs/ReportActionComposeFocusManager';
1515
import variables from '@styles/variables';
1616
import CONST from '@src/CONST';
@@ -82,7 +82,7 @@ function SidePanelContextProvider({children}: PropsWithChildren) {
8282

8383
const isRHPAdminsRoom = onboardingRHPVariant === CONST.ONBOARDING_RHP_VARIANT.RHP_ADMINS_ROOM;
8484
const isRHPHomePage = onboardingRHPVariant === CONST.ONBOARDING_RHP_VARIANT.RHP_HOME_PAGE;
85-
const isUserAdmin = canEditWorkspaceSettings(activePolicy);
85+
const isUserAdmin = isPolicyAdmin(activePolicy, sessionEmail);
8686
const isPolicyActive = shouldShowPolicy(activePolicy, false, sessionEmail ?? '');
8787
const adminsChatReportID = activePolicy?.chatReportIDAdmins?.toString();
8888

src/components/WorkspaceMemberRoleList.tsx

Lines changed: 2 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,12 @@
1-
import {emailSelector} from '@selectors/Session';
21
import React from 'react';
32
import {View} from 'react-native';
43
import type {OnyxEntry} from 'react-native-onyx';
54
import type {ValueOf} from 'type-fest';
65
import useLocalize from '@hooks/useLocalize';
7-
import useOnyx from '@hooks/useOnyx';
86
import useThemeStyles from '@hooks/useThemeStyles';
97
import Navigation from '@libs/Navigation/Navigation';
10-
import {isControlPolicy, isPolicyAdmin} from '@libs/PolicyUtils';
8+
import {isControlPolicy} from '@libs/PolicyUtils';
119
import CONST from '@src/CONST';
12-
import ONYXKEYS from '@src/ONYXKEYS';
1310
import type {Route} from '@src/ROUTES';
1411
import type {Policy} from '@src/types/onyx';
1512
import HeaderWithBackButton from './HeaderWithBackButton';
@@ -35,7 +32,6 @@ type WorkspaceMemberRoleListProps = {
3532
function WorkspaceMemberRoleList({role, policy, navigateBackTo = undefined, isLoading = false, onSelectRole = () => {}}: WorkspaceMemberRoleListProps) {
3633
const {translate} = useLocalize();
3734
const styles = useThemeStyles();
38-
const [currentUserEmail] = useOnyx(ONYXKEYS.SESSION, {selector: emailSelector});
3935

4036
const workspaceRoles: ListItemType[] = [
4137
{
@@ -62,18 +58,7 @@ function WorkspaceMemberRoleList({role, policy, navigateBackTo = undefined, isLo
6258
];
6359

6460
const isPolicyControl = isControlPolicy(policy);
65-
// Only strict admins can assign the ADMIN role. Editors (e.g. Submit workspace owners) can
66-
// invite/manage members but must not be able to escalate anyone to admin.
67-
const canAssignAdminRole = isPolicyAdmin(policy, currentUserEmail);
68-
const availableRoleItems: ListItemType[] = workspaceRoles.filter((item) => {
69-
if (item.value === CONST.POLICY.ROLE.AUDITOR && !isPolicyControl) {
70-
return false;
71-
}
72-
if (item.value === CONST.POLICY.ROLE.ADMIN && !canAssignAdminRole) {
73-
return false;
74-
}
75-
return true;
76-
});
61+
const availableRoleItems: ListItemType[] = workspaceRoles.filter((item) => isPolicyControl || item.value !== CONST.POLICY.ROLE.AUDITOR);
7762

7863
return (
7964
<>

src/hooks/useAutoCreateSubmitWorkspace.ts

Lines changed: 0 additions & 115 deletions
This file was deleted.

src/hooks/useAutoCreateTrackWorkspace.ts

Lines changed: 39 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import {hasSeenTourSelector} from '@selectors/Onboarding';
12
import {useCallback, useMemo} from 'react';
23
import type {OnyxCollection} from 'react-native-onyx';
34
import isSidePanelReportSupported from '@components/SidePanel/isSidePanelReportSupported';
@@ -11,10 +12,17 @@ import {setOnboardingAdminsChatReportID, setOnboardingPolicyID} from '@userActio
1112
import CONST from '@src/CONST';
1213
import ONYXKEYS from '@src/ONYXKEYS';
1314
import type {OnboardingPurpose, OnboardingRHPVariant, Policy} from '@src/types/onyx';
15+
import useActivePolicy from './useActivePolicy';
1416
import 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';
1622
import useOnyx from './useOnyx';
1723
import 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
*/
2533
function 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,

src/hooks/useOnboardingWorkspaceCreationState.ts

Lines changed: 0 additions & 66 deletions
This file was deleted.

0 commit comments

Comments
 (0)