diff --git a/src/libs/API/parameters/SwitchToOldDotOnCompanySizeParams.ts b/src/libs/API/parameters/SwitchToOldDotOnCompanySizeParams.ts new file mode 100644 index 000000000000..540dbb5f4ead --- /dev/null +++ b/src/libs/API/parameters/SwitchToOldDotOnCompanySizeParams.ts @@ -0,0 +1,7 @@ +import type {OnboardingCompanySize} from '@src/CONST'; + +type SwitchToOldDotOnCompanySizeParams = { + onboardingCompanySize: OnboardingCompanySize; +}; + +export default SwitchToOldDotOnCompanySizeParams; diff --git a/src/libs/API/parameters/index.ts b/src/libs/API/parameters/index.ts index f6e9b7804071..38ee3ee71053 100644 --- a/src/libs/API/parameters/index.ts +++ b/src/libs/API/parameters/index.ts @@ -184,6 +184,7 @@ export type {default as SetPolicyRequiresTag} from './SetPolicyRequiresTag'; export type {default as SetPolicyTagsRequired} from './SetPolicyTagsRequired'; export type {default as RenamePolicyTaglistParams} from './RenamePolicyTaglistParams'; export type {default as SwitchToOldDotParams} from './SwitchToOldDotParams'; +export type {default as SwitchToOldDotOnCompanySizeParams} from './SwitchToOldDotOnCompanySizeParams'; export type {default as TrackExpenseParams} from './TrackExpenseParams'; export type {default as EnablePolicyCategoriesParams} from './EnablePolicyCategoriesParams'; export type {default as EnablePolicyConnectionsParams} from './EnablePolicyConnectionsParams'; diff --git a/src/libs/API/types.ts b/src/libs/API/types.ts index 9ebcd6c11f05..f9b863f20de7 100644 --- a/src/libs/API/types.ts +++ b/src/libs/API/types.ts @@ -214,6 +214,7 @@ const WRITE_COMMANDS = { CANCEL_PAYMENT: 'CancelPayment', ACCEPT_ACH_CONTRACT_FOR_BANK_ACCOUNT: 'AcceptACHContractForBankAccount', SWITCH_TO_OLD_DOT: 'SwitchToOldDot', + SWITCH_TO_OLD_DOT_ON_COMPANY_SIZE: 'SwitchToOldDotOnCompanySize', TRACK_EXPENSE: 'TrackExpense', ENABLE_POLICY_CATEGORIES: 'EnablePolicyCategories', ENABLE_POLICY_CONNECTIONS: 'EnablePolicyConnections', @@ -675,6 +676,7 @@ type WriteCommandParameters = { [WRITE_COMMANDS.ENABLE_POLICY_DEFAULT_REPORT_TITLE]: Parameters.EnablePolicyDefaultReportTitleParams; [WRITE_COMMANDS.SET_WORKSPACE_DEFAULT_SPEND_CATEGORY]: Parameters.SetWorkspaceDefaultSpendCategoryParams; [WRITE_COMMANDS.SWITCH_TO_OLD_DOT]: Parameters.SwitchToOldDotParams; + [WRITE_COMMANDS.SWITCH_TO_OLD_DOT_ON_COMPANY_SIZE]: Parameters.SwitchToOldDotOnCompanySizeParams; [WRITE_COMMANDS.TRACK_EXPENSE]: Parameters.TrackExpenseParams; [WRITE_COMMANDS.ENABLE_POLICY_CATEGORIES]: Parameters.EnablePolicyCategoriesParams; [WRITE_COMMANDS.ENABLE_POLICY_CONNECTIONS]: Parameters.EnablePolicyConnectionsParams; diff --git a/src/libs/actions/Welcome/index.ts b/src/libs/actions/Welcome/index.ts index 585f5a59937c..572bbef08188 100644 --- a/src/libs/actions/Welcome/index.ts +++ b/src/libs/actions/Welcome/index.ts @@ -5,13 +5,14 @@ import * as API from '@libs/API'; import {SIDE_EFFECT_REQUEST_COMMANDS, WRITE_COMMANDS} from '@libs/API/types'; import DateUtils from '@libs/DateUtils'; import Log from '@libs/Log'; +import CONST from '@src/CONST'; import type {OnboardingCompanySize} from '@src/CONST'; import ONYXKEYS from '@src/ONYXKEYS'; import type {OnboardingPurpose} from '@src/types/onyx'; import type Onboarding from '@src/types/onyx/Onboarding'; import type TryNewDot from '@src/types/onyx/TryNewDot'; import {isEmptyObject} from '@src/types/utils/EmptyObject'; -import * as OnboardingFlow from './OnboardingFlow'; +import {clearInitialPath} from './OnboardingFlow'; type OnboardingData = Onboarding | undefined; @@ -149,6 +150,29 @@ function completeHybridAppOnboarding() { }); } +/* + * Decides whether we should set dismissed key to `true` or `false` based on company size + */ +function switchToOldDotOnNonMicroCompanySize(onboardingCompanySize: OnboardingCompanySize) { + if (onboardingCompanySize === CONST.ONBOARDING_COMPANY_SIZE.MICRO) { + return; + } + + const optimisticData: OnyxUpdate[] = [ + { + onyxMethod: Onyx.METHOD.MERGE, + key: ONYXKEYS.NVP_TRYNEWDOT, + value: { + classicRedirect: { + dismissed: true, + }, + }, + }, + ]; + + API.write(WRITE_COMMANDS.SWITCH_TO_OLD_DOT_ON_COMPANY_SIZE, {onboardingCompanySize}, {optimisticData}); +} + Onyx.connect({ key: ONYXKEYS.NVP_ONBOARDING, callback: (value) => { @@ -183,7 +207,7 @@ function resetAllChecks() { }); isLoadingReportData = true; isOnboardingInProgress = false; - OnboardingFlow.clearInitialPath(); + clearInitialPath(); } function setSelfTourViewed(shouldUpdateOnyxDataOnlyLocally = false) { @@ -230,6 +254,7 @@ export { setOnboardingAdminsChatReportID, setOnboardingPolicyID, completeHybridAppOnboarding, + switchToOldDotOnNonMicroCompanySize, setOnboardingErrorMessage, setOnboardingCompanySize, setSelfTourViewed, diff --git a/src/pages/OnboardingEmployees/BaseOnboardingEmployees.tsx b/src/pages/OnboardingEmployees/BaseOnboardingEmployees.tsx index 1a4b9bd79e61..f37192551e40 100644 --- a/src/pages/OnboardingEmployees/BaseOnboardingEmployees.tsx +++ b/src/pages/OnboardingEmployees/BaseOnboardingEmployees.tsx @@ -13,11 +13,13 @@ import Text from '@components/Text'; import useLocalize from '@hooks/useLocalize'; import useResponsiveLayout from '@hooks/useResponsiveLayout'; import useThemeStyles from '@hooks/useThemeStyles'; +import getPlatform from '@libs/getPlatform'; import Navigation from '@libs/Navigation/Navigation'; import {isPaidGroupPolicy} from '@libs/PolicyUtils'; +import {openOldDotLink} from '@userActions/Link'; import {createWorkspace, generatePolicyID} from '@userActions/Policy/Policy'; import {completeOnboarding} from '@userActions/Report'; -import {setOnboardingAdminsChatReportID, setOnboardingCompanySize, setOnboardingPolicyID} from '@userActions/Welcome'; +import {setOnboardingAdminsChatReportID, setOnboardingCompanySize, setOnboardingPolicyID, switchToOldDotOnNonMicroCompanySize} from '@userActions/Welcome'; import CONST from '@src/CONST'; import type {OnboardingCompanySize} from '@src/CONST'; import ONYXKEYS from '@src/ONYXKEYS'; @@ -73,6 +75,11 @@ function BaseOnboardingEmployees({shouldUseNativeStyles, route}: BaseOnboardingE } setOnboardingCompanySize(selectedCompanySize); + // Redirect is disabled on desktop + if (getPlatform() !== CONST.PLATFORM.DESKTOP) { + switchToOldDotOnNonMicroCompanySize(selectedCompanySize); + } + const shouldCreateWorkspace = !onboardingPolicyID && !paidGroupPolicy; // We need `adminsChatReportID` for `completeOnboarding`, but at the same time, we don't want to call `createWorkspace` more than once. @@ -86,8 +93,8 @@ function BaseOnboardingEmployees({shouldUseNativeStyles, route}: BaseOnboardingE setOnboardingPolicyID(policyID); } - // For MICRO companies (1-10 employees), we want to remain on NewDot. - if (!NativeModules.HybridAppModule || selectedCompanySize === CONST.ONBOARDING_COMPANY_SIZE.MICRO) { + // For MICRO companies (1-10 employees) or desktop app, we want to remain on NewDot. + if (selectedCompanySize === CONST.ONBOARDING_COMPANY_SIZE.MICRO || getPlatform() === CONST.PLATFORM.DESKTOP) { Navigation.navigate(ROUTES.ONBOARDING_ACCOUNTING.getRoute(route.params?.backTo)); return; } @@ -107,8 +114,12 @@ function BaseOnboardingEmployees({shouldUseNativeStyles, route}: BaseOnboardingE ); } - NativeModules.HybridAppModule.closeReactNativeApp(false, true); - setRootStatusBarEnabled(false); + if (NativeModules.HybridAppModule) { + NativeModules.HybridAppModule.closeReactNativeApp(false, true); + setRootStatusBarEnabled(false); + } else { + openOldDotLink(CONST.OLDDOT_URLS.INBOX, true); + } }} pressOnEnter />