diff --git a/src/CONST/index.ts b/src/CONST/index.ts index 874f84690514..b52f7bc9bb79 100755 --- a/src/CONST/index.ts +++ b/src/CONST/index.ts @@ -703,7 +703,6 @@ const CONST = { TRACK_FLOWS: 'trackFlows', EXPENSIFY_CARD_EU_UK: 'expensifyCardEuUk', EUR_BILLING: 'eurBilling', - MANUAL_DISTANCE: 'manualDistance', NO_OPTIMISTIC_TRANSACTION_THREADS: 'noOptimisticTransactionThreads', UBER_FOR_BUSINESS: 'uberForBusiness', CUSTOM_REPORT_NAMES: 'newExpensifyCustomReportNames', diff --git a/src/components/MoneyRequestConfirmationListFooter.tsx b/src/components/MoneyRequestConfirmationListFooter.tsx index 7203ffbde49b..29974e5742a0 100644 --- a/src/components/MoneyRequestConfirmationListFooter.tsx +++ b/src/components/MoneyRequestConfirmationListFooter.tsx @@ -9,7 +9,6 @@ import type {ValueOf} from 'type-fest'; import useLocalize from '@hooks/useLocalize'; import useNetwork from '@hooks/useNetwork'; import useOnyx from '@hooks/useOnyx'; -import usePermissions from '@hooks/usePermissions'; import usePrevious from '@hooks/usePrevious'; import useThemeStyles from '@hooks/useThemeStyles'; import {convertToDisplayString} from '@libs/CurrencyUtils'; @@ -274,8 +273,6 @@ function MoneyRequestConfirmationListFooter({ const styles = useThemeStyles(); const {translate, toLocaleDigit, localeCompare} = useLocalize(); const {isOffline} = useNetwork(); - const {isBetaEnabled} = usePermissions(); - const isManualDistanceEnabled = isBetaEnabled(CONST.BETAS.MANUAL_DISTANCE); const [allPolicies] = useOnyx(ONYXKEYS.COLLECTION.POLICY, {canBeMissing: true}); const [allReports] = useOnyx(ONYXKEYS.COLLECTION.REPORT, {canBeMissing: true}); @@ -505,7 +502,7 @@ function MoneyRequestConfirmationListFooter({ item: ( ), shouldShow: isDistanceRequest, diff --git a/src/libs/TransactionUtils/index.ts b/src/libs/TransactionUtils/index.ts index 43ae81a05a4c..caf0040b38a6 100644 --- a/src/libs/TransactionUtils/index.ts +++ b/src/libs/TransactionUtils/index.ts @@ -216,22 +216,16 @@ function isCorporateCardTransaction(transaction: OnyxEntry): boolea return isCardTransaction(transaction) && transaction?.comment?.liabilityType === CONST.TRANSACTION.LIABILITY_TYPE.RESTRICT; } -function getRequestType(transaction: OnyxEntry, isManualDistanceEnabled?: boolean): IOURequestType { - if (isManualDistanceEnabled) { - if (isManualDistanceRequest(transaction)) { - return CONST.IOU.REQUEST_TYPE.DISTANCE_MANUAL; - } - if (isMapDistanceRequest(transaction)) { - return CONST.IOU.REQUEST_TYPE.DISTANCE_MAP; - } +function getRequestType(transaction: OnyxEntry): IOURequestType { + if (isManualDistanceRequest(transaction)) { + return CONST.IOU.REQUEST_TYPE.DISTANCE_MANUAL; } - if (isDistanceRequest(transaction)) { - return CONST.IOU.REQUEST_TYPE.DISTANCE; + if (isMapDistanceRequest(transaction)) { + return CONST.IOU.REQUEST_TYPE.DISTANCE_MAP; } if (isScanRequest(transaction)) { return CONST.IOU.REQUEST_TYPE.SCAN; } - if (isPerDiemRequest(transaction)) { return CONST.IOU.REQUEST_TYPE.PER_DIEM; } diff --git a/src/libs/actions/QuickActionNavigation.ts b/src/libs/actions/QuickActionNavigation.ts index de8adae1eda6..4f9ecab58b92 100644 --- a/src/libs/actions/QuickActionNavigation.ts +++ b/src/libs/actions/QuickActionNavigation.ts @@ -11,15 +11,10 @@ type NavigateToQuickActionParams = { isValidReport: boolean; quickAction: QuickAction; selectOption: (onSelected: () => void, shouldRestrictAction: boolean) => void; - isManualDistanceTrackingEnabled?: boolean; lastDistanceExpenseType?: DistanceExpenseType; }; -function getQuickActionRequestType( - action: QuickActionName | undefined, - lastDistanceExpenseType?: DistanceExpenseType, - isManualDistanceTrackingEnabled?: boolean, -): IOURequestType | undefined { +function getQuickActionRequestType(action: QuickActionName | undefined, lastDistanceExpenseType?: DistanceExpenseType): IOURequestType | undefined { if (!action) { return; } @@ -30,11 +25,7 @@ function getQuickActionRequestType( } else if ([CONST.QUICK_ACTIONS.REQUEST_SCAN, CONST.QUICK_ACTIONS.SPLIT_SCAN, CONST.QUICK_ACTIONS.TRACK_SCAN].some((a) => a === action)) { requestType = CONST.IOU.REQUEST_TYPE.SCAN; } else if ([CONST.QUICK_ACTIONS.REQUEST_DISTANCE, CONST.QUICK_ACTIONS.SPLIT_DISTANCE, CONST.QUICK_ACTIONS.TRACK_DISTANCE].some((a) => a === action)) { - if (isManualDistanceTrackingEnabled) { - requestType = lastDistanceExpenseType ?? CONST.IOU.REQUEST_TYPE.DISTANCE_MAP; - } else { - requestType = CONST.IOU.REQUEST_TYPE.DISTANCE; - } + requestType = lastDistanceExpenseType ?? CONST.IOU.REQUEST_TYPE.DISTANCE_MAP; } else if (action === CONST.QUICK_ACTIONS.PER_DIEM) { requestType = CONST.IOU.REQUEST_TYPE.PER_DIEM; } @@ -43,9 +34,9 @@ function getQuickActionRequestType( } function navigateToQuickAction(params: NavigateToQuickActionParams) { - const {isValidReport, quickAction, selectOption, isManualDistanceTrackingEnabled, lastDistanceExpenseType} = params; + const {isValidReport, quickAction, selectOption, lastDistanceExpenseType} = params; const reportID = isValidReport && quickAction?.chatReportID ? quickAction?.chatReportID : generateReportID(); - const requestType = getQuickActionRequestType(quickAction?.action, lastDistanceExpenseType, isManualDistanceTrackingEnabled); + const requestType = getQuickActionRequestType(quickAction?.action, lastDistanceExpenseType); switch (quickAction?.action) { case CONST.QUICK_ACTIONS.REQUEST_MANUAL: @@ -69,18 +60,10 @@ function navigateToQuickAction(params: NavigateToQuickActionParams) { selectOption(() => startMoneyRequest(CONST.IOU.TYPE.TRACK, reportID, requestType, true), false); break; case CONST.QUICK_ACTIONS.REQUEST_DISTANCE: - if (isManualDistanceTrackingEnabled) { - selectOption(() => startDistanceRequest(CONST.IOU.TYPE.SUBMIT, reportID, requestType, true), false); - return; - } - selectOption(() => startMoneyRequest(CONST.IOU.TYPE.SUBMIT, reportID, requestType, true), true); + selectOption(() => startDistanceRequest(CONST.IOU.TYPE.SUBMIT, reportID, requestType, true), false); break; case CONST.QUICK_ACTIONS.TRACK_DISTANCE: - if (isManualDistanceTrackingEnabled) { - selectOption(() => startDistanceRequest(CONST.IOU.TYPE.TRACK, reportID, requestType, true), false); - return; - } - selectOption(() => startMoneyRequest(CONST.IOU.TYPE.TRACK, reportID, requestType, true), false); + selectOption(() => startDistanceRequest(CONST.IOU.TYPE.TRACK, reportID, requestType, true), false); break; default: } diff --git a/src/pages/TransactionReceiptPage.tsx b/src/pages/TransactionReceiptPage.tsx index 4172fb9ffe09..9b757958ac38 100644 --- a/src/pages/TransactionReceiptPage.tsx +++ b/src/pages/TransactionReceiptPage.tsx @@ -1,7 +1,6 @@ import React, {useEffect} from 'react'; import AttachmentModal from '@components/AttachmentModal'; import useOnyx from '@hooks/useOnyx'; -import usePermissions from '@hooks/usePermissions'; import {navigateToStartStepIfScanFileCannotBeRead} from '@libs/actions/IOU'; import {openReport} from '@libs/actions/Report'; import getReceiptFilenameFromTransaction from '@libs/getReceiptFilenameFromTransaction'; @@ -30,7 +29,6 @@ function TransactionReceipt({route}: TransactionReceiptProps) { const [transactionMain] = useOnyx(`${ONYXKEYS.COLLECTION.TRANSACTION}${transactionID}`, {canBeMissing: true}); const [transactionDraft] = useOnyx(`${ONYXKEYS.COLLECTION.TRANSACTION_DRAFT}${transactionID}`, {canBeMissing: true}); const [reportMetadata = CONST.DEFAULT_REPORT_METADATA] = useOnyx(`${ONYXKEYS.COLLECTION.REPORT_METADATA}${reportID}`, {canBeMissing: true}); - const {isBetaEnabled} = usePermissions(); const mergeTransactionID = 'mergeTransactionID' in route.params ? route.params.mergeTransactionID : undefined; const isFromReviewDuplicates = 'isFromReviewDuplicates' in route.params ? route.params.isFromReviewDuplicates === 'true' : undefined; @@ -79,7 +77,7 @@ function TransactionReceipt({route}: TransactionReceiptProps) { return; } - const requestType = getRequestType(transaction, isBetaEnabled(CONST.BETAS.MANUAL_DISTANCE)); + const requestType = getRequestType(transaction); const receiptFilename = getReceiptFilenameFromTransaction(transaction); const receiptType = transaction?.receipt?.type; navigateToStartStepIfScanFileCannotBeRead( diff --git a/src/pages/home/report/ReportActionCompose/AttachmentPickerWithMenuItems.tsx b/src/pages/home/report/ReportActionCompose/AttachmentPickerWithMenuItems.tsx index 31c558e60fb8..4f3552faf5ea 100644 --- a/src/pages/home/report/ReportActionCompose/AttachmentPickerWithMenuItems.tsx +++ b/src/pages/home/report/ReportActionCompose/AttachmentPickerWithMenuItems.tsx @@ -14,7 +14,6 @@ import Tooltip from '@components/Tooltip/PopoverAnchorTooltip'; import useEnvironment from '@hooks/useEnvironment'; import useLocalize from '@hooks/useLocalize'; import useOnyx from '@hooks/useOnyx'; -import usePermissions from '@hooks/usePermissions'; import usePrevious from '@hooks/usePrevious'; import useReportIsArchived from '@hooks/useReportIsArchived'; import useResponsiveLayout from '@hooks/useResponsiveLayout'; @@ -131,12 +130,9 @@ function AttachmentPickerWithMenuItems({ const [policy] = useOnyx(`${ONYXKEYS.COLLECTION.POLICY}${report?.policyID}`, {canBeMissing: true}); const [lastDistanceExpenseType] = useOnyx(ONYXKEYS.NVP_LAST_DISTANCE_EXPENSE_TYPE, {canBeMissing: true}); const {isProduction} = useEnvironment(); - const {isBetaEnabled} = usePermissions(); const {setIsLoaderVisible} = useFullScreenLoader(); const isReportArchived = useReportIsArchived(report?.reportID); - const isManualDistanceTrackingEnabled = isBetaEnabled(CONST.BETAS.MANUAL_DISTANCE); - const selectOption = useCallback( (onSelected: () => void, shouldRestrictAction: boolean) => { if (shouldRestrictAction && policy && shouldRestrictUserBillableActions(policy.id)) { @@ -172,17 +168,12 @@ function AttachmentPickerWithMenuItems({ shouldCallAfterModalHide: shouldUseNarrowLayout, onSelected: () => selectOption(() => startMoneyRequest(CONST.IOU.TYPE.SUBMIT, report?.reportID ?? String(CONST.DEFAULT_NUMBER_ID)), true), }, - ...(isManualDistanceTrackingEnabled - ? [ - { - icon: Expensicons.Location, - text: translate('quickAction.recordDistance'), - shouldCallAfterModalHide: shouldUseNarrowLayout, - onSelected: () => - selectOption(() => startDistanceRequest(CONST.IOU.TYPE.SUBMIT, report?.reportID ?? String(CONST.DEFAULT_NUMBER_ID), lastDistanceExpenseType), true), - }, - ] - : []), + { + icon: Expensicons.Location, + text: translate('quickAction.recordDistance'), + shouldCallAfterModalHide: shouldUseNarrowLayout, + onSelected: () => selectOption(() => startDistanceRequest(CONST.IOU.TYPE.SUBMIT, report?.reportID ?? String(CONST.DEFAULT_NUMBER_ID), lastDistanceExpenseType), true), + }, ], [CONST.IOU.TYPE.PAY]: [ { @@ -207,17 +198,12 @@ function AttachmentPickerWithMenuItems({ shouldCallAfterModalHide: shouldUseNarrowLayout, onSelected: () => selectOption(() => startMoneyRequest(CONST.IOU.TYPE.TRACK, report?.reportID ?? String(CONST.DEFAULT_NUMBER_ID)), true), }, - ...(isManualDistanceTrackingEnabled - ? [ - { - icon: Expensicons.Location, - text: translate('iou.trackDistance'), - shouldCallAfterModalHide: shouldUseNarrowLayout, - onSelected: () => - selectOption(() => startDistanceRequest(CONST.IOU.TYPE.TRACK, report?.reportID ?? String(CONST.DEFAULT_NUMBER_ID), lastDistanceExpenseType), true), - }, - ] - : []), + { + icon: Expensicons.Location, + text: translate('iou.trackDistance'), + shouldCallAfterModalHide: shouldUseNarrowLayout, + onSelected: () => selectOption(() => startDistanceRequest(CONST.IOU.TYPE.TRACK, report?.reportID ?? String(CONST.DEFAULT_NUMBER_ID), lastDistanceExpenseType), true), + }, ], [CONST.IOU.TYPE.INVOICE]: [ { @@ -241,7 +227,6 @@ function AttachmentPickerWithMenuItems({ selectOption, isDelegateAccessRestricted, showDelegateNoAccessModal, - isManualDistanceTrackingEnabled, isReportArchived, lastDistanceExpenseType, ]); diff --git a/src/pages/home/sidebar/FloatingActionButtonAndPopover.tsx b/src/pages/home/sidebar/FloatingActionButtonAndPopover.tsx index 75b60d616df0..15da6a90cfb8 100644 --- a/src/pages/home/sidebar/FloatingActionButtonAndPopover.tsx +++ b/src/pages/home/sidebar/FloatingActionButtonAndPopover.tsx @@ -135,7 +135,6 @@ function FloatingActionButtonAndPopover({onHideCreateMenu, onShowCreateMenu, ref const {isOffline} = useNetwork(); const {isBetaEnabled} = usePermissions(); const isBlockedFromSpotnanaTravel = isBetaEnabled(CONST.BETAS.PREVENT_SPOTNANA_TRAVEL); - const isManualDistanceTrackingEnabled = isBetaEnabled(CONST.BETAS.MANUAL_DISTANCE); const [primaryLogin] = useOnyx(ONYXKEYS.ACCOUNT, {selector: accountPrimaryLoginSelector, canBeMissing: true}); const primaryContactMethod = primaryLogin ?? session?.email ?? ''; const [travelSettings] = useOnyx(ONYXKEYS.NVP_TRAVEL_SETTINGS, {canBeMissing: true}); @@ -353,7 +352,7 @@ function FloatingActionButtonAndPopover({onHideCreateMenu, onShowCreateMenu, ref showDelegateNoAccessModal(); return; } - navigateToQuickAction({isValidReport, quickAction, selectOption, isManualDistanceTrackingEnabled, lastDistanceExpenseType}); + navigateToQuickAction({isValidReport, quickAction, selectOption, lastDistanceExpenseType}); }); }; return [ @@ -413,7 +412,6 @@ function FloatingActionButtonAndPopover({onHideCreateMenu, onShowCreateMenu, ref isDelegateAccessRestricted, showDelegateNoAccessModal, isReportArchived, - isManualDistanceTrackingEnabled, lastDistanceExpenseType, allTransactionDrafts, ]); @@ -438,31 +436,27 @@ function FloatingActionButtonAndPopover({onHideCreateMenu, onShowCreateMenu, ref const menuItems = [ ...expenseMenuItems, - ...(isManualDistanceTrackingEnabled - ? [ - { - icon: Expensicons.Location, - text: translate('iou.trackDistance'), - shouldCallAfterModalHide: shouldUseNarrowLayout, - onSelected: () => { - interceptAnonymousUser(() => { - if (shouldRedirectToExpensifyClassic) { - setModalVisible(true); - return; - } - // Start the flow to start tracking a distance request - startDistanceRequest( - CONST.IOU.TYPE.CREATE, - // When starting to create an expense from the global FAB, there is not an existing report yet. A random optimistic reportID is generated and used - // for all of the routes in the creation flow. - generateReportID(), - lastDistanceExpenseType, - ); - }); - }, - }, - ] - : []), + { + icon: Expensicons.Location, + text: translate('iou.trackDistance'), + shouldCallAfterModalHide: shouldUseNarrowLayout, + onSelected: () => { + interceptAnonymousUser(() => { + if (shouldRedirectToExpensifyClassic) { + setModalVisible(true); + return; + } + // Start the flow to start tracking a distance request + startDistanceRequest( + CONST.IOU.TYPE.CREATE, + // When starting to create an expense from the global FAB, there is not an existing report yet. A random optimistic reportID is generated and used + // for all of the routes in the creation flow. + generateReportID(), + lastDistanceExpenseType, + ); + }); + }, + }, ...(shouldShowCreateReportOption ? [ { diff --git a/src/pages/iou/request/IOURequestStartPage.tsx b/src/pages/iou/request/IOURequestStartPage.tsx index ef1dd5fcf6f0..8f7f2439b3d1 100644 --- a/src/pages/iou/request/IOURequestStartPage.tsx +++ b/src/pages/iou/request/IOURequestStartPage.tsx @@ -179,7 +179,6 @@ function IOURequestStartPage({ }, [headerWithBackBtnContainerElement, tabBarContainerElement, activeTabContainerElement]); const {isBetaEnabled} = usePermissions(); - const manualDistanceTrackingEnabled = isBetaEnabled(CONST.BETAS.MANUAL_DISTANCE); const setTestReceiptAndNavigateRef = useRef<() => void>(() => {}); const {shouldShowProductTrainingTooltip, renderProductTrainingTooltip} = useProductTrainingContext( CONST.PRODUCT_TRAINING_TOOLTIP_NAMES.SCAN_TEST_TOOLTIP, @@ -266,7 +265,7 @@ function IOURequestStartPage({ )} - {(!manualDistanceTrackingEnabled || iouType === CONST.IOU.TYPE.SPLIT) && ( + {iouType === CONST.IOU.TYPE.SPLIT && ( {() => ( diff --git a/src/pages/iou/request/step/IOURequestStepAmount.tsx b/src/pages/iou/request/step/IOURequestStepAmount.tsx index f2b8ad744581..f103eba08fcf 100644 --- a/src/pages/iou/request/step/IOURequestStepAmount.tsx +++ b/src/pages/iou/request/step/IOURequestStepAmount.tsx @@ -77,7 +77,7 @@ function IOURequestStepAmount({ const textInput = useRef(null); const focusTimeoutRef = useRef(null); const isSaveButtonPressed = useRef(false); - const iouRequestType = getRequestType(transaction, isBetaEnabled(CONST.BETAS.MANUAL_DISTANCE)); + const iouRequestType = getRequestType(transaction); const policyID = report?.policyID; const isReportArchived = useReportIsArchived(report?.reportID); diff --git a/src/pages/iou/request/step/IOURequestStepConfirmation.tsx b/src/pages/iou/request/step/IOURequestStepConfirmation.tsx index 9d38098efd46..6963fbd3c9a8 100644 --- a/src/pages/iou/request/step/IOURequestStepConfirmation.tsx +++ b/src/pages/iou/request/step/IOURequestStepConfirmation.tsx @@ -186,7 +186,7 @@ function IOURequestStepConfirmation({ const [isDraggingOver, setIsDraggingOver] = useState(false); const [receiptFiles, setReceiptFiles] = useState>({}); - const requestType = getRequestType(transaction, isBetaEnabled(CONST.BETAS.MANUAL_DISTANCE)); + const requestType = getRequestType(transaction); const isDistanceRequest = isDistanceRequestTransactionUtils(transaction); const isManualDistanceRequest = isManualDistanceRequestTransactionUtils(transaction); const isPerDiemRequest = requestType === CONST.IOU.REQUEST_TYPE.PER_DIEM; diff --git a/src/pages/iou/request/step/IOURequestStepDistance.tsx b/src/pages/iou/request/step/IOURequestStepDistance.tsx index a39a2118c33e..f5fc78f29a37 100644 --- a/src/pages/iou/request/step/IOURequestStepDistance.tsx +++ b/src/pages/iou/request/step/IOURequestStepDistance.tsx @@ -19,7 +19,6 @@ import useFetchRoute from '@hooks/useFetchRoute'; import useLocalize from '@hooks/useLocalize'; import useNetwork from '@hooks/useNetwork'; import useOnyx from '@hooks/useOnyx'; -import usePermissions from '@hooks/usePermissions'; import usePolicy from '@hooks/usePolicy'; import usePrevious from '@hooks/usePrevious'; import useShowNotFoundPageInIOUStep from '@hooks/useShowNotFoundPageInIOUStep'; @@ -82,7 +81,6 @@ function IOURequestStepDistance({ const styles = useThemeStyles(); const {isOffline} = useNetwork(); const {translate} = useLocalize(); - const {isBetaEnabled} = usePermissions(); const [allReports] = useOnyx(ONYXKEYS.COLLECTION.REPORT, {canBeMissing: false}); const [reportNameValuePairs] = useOnyx(`${ONYXKEYS.COLLECTION.REPORT_NAME_VALUE_PAIRS}${report?.reportID}`, {canBeMissing: true}); const [transactionBackup] = useOnyx(`${ONYXKEYS.COLLECTION.TRANSACTION_BACKUP}${transactionID}`, {canBeMissing: true}); @@ -142,7 +140,7 @@ function IOURequestStepDistance({ const transactionWasSaved = useRef(false); const isCreatingNewRequest = !(backTo || isEditing); const [recentWaypoints, {status: recentWaypointsStatus}] = useOnyx(ONYXKEYS.NVP_RECENT_WAYPOINTS, {canBeMissing: true}); - const iouRequestType = getRequestType(transaction, isBetaEnabled(CONST.BETAS.MANUAL_DISTANCE)); + const iouRequestType = getRequestType(transaction); const customUnitRateID = getRateID(transaction); // eslint-disable-next-line rulesdir/no-negated-variables const shouldShowNotFoundPage = useShowNotFoundPageInIOUStep(action, iouType, reportActionID, report, transaction); diff --git a/src/pages/iou/request/step/IOURequestStepDistanceMap.tsx b/src/pages/iou/request/step/IOURequestStepDistanceMap.tsx index 58970a78dbb3..f095f69c13e9 100644 --- a/src/pages/iou/request/step/IOURequestStepDistanceMap.tsx +++ b/src/pages/iou/request/step/IOURequestStepDistanceMap.tsx @@ -19,7 +19,6 @@ import useFetchRoute from '@hooks/useFetchRoute'; import useLocalize from '@hooks/useLocalize'; import useNetwork from '@hooks/useNetwork'; import useOnyx from '@hooks/useOnyx'; -import usePermissions from '@hooks/usePermissions'; import usePolicy from '@hooks/usePolicy'; import usePrevious from '@hooks/usePrevious'; import useShowNotFoundPageInIOUStep from '@hooks/useShowNotFoundPageInIOUStep'; @@ -82,7 +81,6 @@ function IOURequestStepDistanceMap({ const styles = useThemeStyles(); const {isOffline} = useNetwork(); const {translate} = useLocalize(); - const {isBetaEnabled} = usePermissions(); const [allReports] = useOnyx(ONYXKEYS.COLLECTION.REPORT, {canBeMissing: false}); const [reportNameValuePairs] = useOnyx(`${ONYXKEYS.COLLECTION.REPORT_NAME_VALUE_PAIRS}${report?.reportID}`, {canBeMissing: true}); const [transactionBackup] = useOnyx(`${ONYXKEYS.COLLECTION.TRANSACTION_BACKUP}${transactionID}`, {canBeMissing: true}); @@ -142,7 +140,7 @@ function IOURequestStepDistanceMap({ const transactionWasSaved = useRef(false); const isCreatingNewRequest = !(backTo || isEditing); const [recentWaypoints, {status: recentWaypointsStatus}] = useOnyx(ONYXKEYS.NVP_RECENT_WAYPOINTS, {canBeMissing: true}); - const iouRequestType = getRequestType(transaction, isBetaEnabled(CONST.BETAS.MANUAL_DISTANCE)); + const iouRequestType = getRequestType(transaction); const customUnitRateID = getRateID(transaction); // eslint-disable-next-line rulesdir/no-negated-variables const shouldShowNotFoundPage = useShowNotFoundPageInIOUStep(action, iouType, reportActionID, report, transaction); diff --git a/src/pages/iou/request/step/IOURequestStepParticipants.tsx b/src/pages/iou/request/step/IOURequestStepParticipants.tsx index 0348bfb13163..175d96cdc430 100644 --- a/src/pages/iou/request/step/IOURequestStepParticipants.tsx +++ b/src/pages/iou/request/step/IOURequestStepParticipants.tsx @@ -5,7 +5,6 @@ import type {OnyxCollection, OnyxEntry} from 'react-native-onyx'; import FormHelpMessage from '@components/FormHelpMessage'; import useLocalize from '@hooks/useLocalize'; import useOnyx from '@hooks/useOnyx'; -import usePermissions from '@hooks/usePermissions'; import useThemeStyles from '@hooks/useThemeStyles'; import {setTransactionReport} from '@libs/actions/Transaction'; import {READ_COMMANDS} from '@libs/API/types'; @@ -74,7 +73,6 @@ function IOURequestStepParticipants({ const {translate} = useLocalize(); const styles = useThemeStyles(); const isFocused = useIsFocused(); - const {isBetaEnabled} = usePermissions(); const [skipConfirmation] = useOnyx(`${ONYXKEYS.COLLECTION.SKIP_CONFIRMATION}${initialTransactionID}`, {canBeMissing: true}); const [optimisticTransactions] = useOnyx(ONYXKEYS.COLLECTION.TRANSACTION_DRAFT, { selector: (items) => Object.values(items ?? {}), @@ -93,7 +91,7 @@ function IOURequestStepParticipants({ // We need to set selectedReportID if user has navigated back from confirmation page and navigates to confirmation page with already selected participant const selectedReportID = useRef(participants?.length === 1 ? (participants.at(0)?.reportID ?? reportID) : reportID); const numberOfParticipants = useRef(participants?.length ?? 0); - const iouRequestType = getRequestType(initialTransaction, isBetaEnabled(CONST.BETAS.MANUAL_DISTANCE)); + const iouRequestType = getRequestType(initialTransaction); const isSplitRequest = iouType === CONST.IOU.TYPE.SPLIT; const isMovingTransactionFromTrackExpense = isMovingTransactionFromTrackExpenseIOUUtils(action); const headerTitle = useMemo(() => { diff --git a/src/pages/media/AttachmentModalScreen/routes/TransactionReceiptModalContent.tsx b/src/pages/media/AttachmentModalScreen/routes/TransactionReceiptModalContent.tsx index 6331cbff1cf8..d60c6c3bcbcd 100644 --- a/src/pages/media/AttachmentModalScreen/routes/TransactionReceiptModalContent.tsx +++ b/src/pages/media/AttachmentModalScreen/routes/TransactionReceiptModalContent.tsx @@ -1,6 +1,5 @@ import React, {useEffect, useMemo, useState} from 'react'; import useOnyx from '@hooks/useOnyx'; -import usePermissions from '@hooks/usePermissions'; import {navigateToStartStepIfScanFileCannotBeRead} from '@libs/actions/IOU'; import {openReport} from '@libs/actions/Report'; import getReceiptFilenameFromTransaction from '@libs/getReceiptFilenameFromTransaction'; @@ -20,7 +19,6 @@ import type SCREENS from '@src/SCREENS'; function TransactionReceiptModalContent({navigation, route}: AttachmentModalScreenProps) { const {reportID = '', transactionID = '', action, iouType, readonly: readonlyProp, isFromReviewDuplicates: isFromReviewDuplicatesProp} = route.params; - const {isBetaEnabled} = usePermissions(); const [report] = useOnyx(`${ONYXKEYS.COLLECTION.REPORT}${reportID}`, {canBeMissing: true}); const [transactionMain] = useOnyx(`${ONYXKEYS.COLLECTION.TRANSACTION}${transactionID}`, {canBeMissing: true}); @@ -60,7 +58,7 @@ function TransactionReceiptModalContent({navigation, route}: AttachmentModalScre return; } - const requestType = getRequestType(transaction, isBetaEnabled(CONST.BETAS.MANUAL_DISTANCE)); + const requestType = getRequestType(transaction); const receiptFilename = getReceiptFilenameFromTransaction(transaction); const receiptType = transaction?.receipt?.type; navigateToStartStepIfScanFileCannotBeRead( diff --git a/tests/unit/QuickActionNavigationTest.ts b/tests/unit/QuickActionNavigationTest.ts index bab2c1c5d89d..64f17ac2484d 100644 --- a/tests/unit/QuickActionNavigationTest.ts +++ b/tests/unit/QuickActionNavigationTest.ts @@ -29,6 +29,7 @@ describe('IOU Utils', () => { onSelected(); }, }); + // Then we should start manual submit request flow expect(startMoneyRequest).toHaveBeenCalledWith(CONST.IOU.TYPE.SUBMIT, reportID, CONST.IOU.REQUEST_TYPE.MANUAL, true); }); @@ -42,6 +43,7 @@ describe('IOU Utils', () => { onSelected(); }, }); + // Then we should start scan split request flow expect(startMoneyRequest).toHaveBeenCalledWith(CONST.IOU.TYPE.SPLIT, reportID, CONST.IOU.REQUEST_TYPE.SCAN, true); }); @@ -55,35 +57,36 @@ describe('IOU Utils', () => { onSelected(); }, }); + // Then we should start distance track request flow - expect(startMoneyRequest).toHaveBeenCalledWith(CONST.IOU.TYPE.TRACK, reportID, CONST.IOU.REQUEST_TYPE.DISTANCE, true); + expect(startDistanceRequest).toHaveBeenCalledWith(CONST.IOU.TYPE.TRACK, reportID, CONST.IOU.REQUEST_TYPE.DISTANCE_MAP, true); }); - it('should be navigated to Map distance Expense if isManualDistanceTrackingEnabled beta', () => { - // When the quick action is REQUEST_DISTANCE and isManualDistanceTrackingEnabled + it('should be navigated to Map distance Expense by default', () => { + // When the quick action is REQUEST_DISTANCE navigateToQuickAction({ isValidReport: true, quickAction: {action: CONST.QUICK_ACTIONS.REQUEST_DISTANCE, chatReportID: reportID}, selectOption: (onSelected: () => void) => { onSelected(); }, - isManualDistanceTrackingEnabled: true, }); + // Then we should start map distance request flow expect(startDistanceRequest).toHaveBeenCalledWith(CONST.IOU.TYPE.SUBMIT, reportID, CONST.IOU.REQUEST_TYPE.DISTANCE_MAP, true); }); - it('should be navigated to request distance Expense if isManualDistanceTrackingEnabled beta depending on lastDistanceExpenseType', () => { - // When the quick action is REQUEST_DISTANCE and isManualDistanceTrackingEnabled + it('should be navigated to request distance Expense depending on lastDistanceExpenseType', () => { + // When the quick action is REQUEST_DISTANCE navigateToQuickAction({ isValidReport: true, quickAction: {action: CONST.QUICK_ACTIONS.REQUEST_DISTANCE, chatReportID: reportID}, selectOption: (onSelected: () => void) => { onSelected(); }, - isManualDistanceTrackingEnabled: true, lastDistanceExpenseType: CONST.IOU.REQUEST_TYPE.DISTANCE_MANUAL, }); + // Then we should start manual distance request flow expect(startDistanceRequest).toHaveBeenCalledWith(CONST.IOU.TYPE.SUBMIT, reportID, CONST.IOU.REQUEST_TYPE.DISTANCE_MANUAL, true); }); @@ -97,6 +100,7 @@ describe('IOU Utils', () => { onSelected(); }, }); + // Then we should start per diem request flow expect(startMoneyRequest).toHaveBeenCalledWith(CONST.IOU.TYPE.SUBMIT, reportID, CONST.IOU.REQUEST_TYPE.PER_DIEM, true); }); diff --git a/tests/unit/usePermissionsTest.tsx b/tests/unit/usePermissionsTest.tsx index 445250839a81..775d1efbde74 100644 --- a/tests/unit/usePermissionsTest.tsx +++ b/tests/unit/usePermissionsTest.tsx @@ -78,7 +78,7 @@ describe('usePermissions', () => { it('should handle explicit only and exclusion betas correctly', async () => { // Given: A beta configuration with both explicit only and exclusion betas - const explicitOnlyBeta = CONST.BETAS.MANUAL_DISTANCE; + const explicitOnlyBeta = CONST.BETAS.CUSTOM_REPORT_NAMES; const exclusionBeta = CONST.BETAS.PREVENT_SPOTNANA_TRAVEL; const betaConfiguration = { explicitOnly: [explicitOnlyBeta],