From 718fab9ba9b4328aff1fbd469fc0f104337770f2 Mon Sep 17 00:00:00 2001 From: neil-marcellini Date: Tue, 5 Nov 2024 14:59:08 -0800 Subject: [PATCH 1/5] Remove P2P distance requests beta checks --- .../MoneyRequestConfirmationList.tsx | 6 ++--- .../MoneyRequestConfirmationListFooter.tsx | 27 ++----------------- .../ReportActionItem/MoneyRequestView.tsx | 24 +---------------- src/libs/DistanceRequestUtils.ts | 4 +-- src/libs/Permissions.ts | 6 ----- src/pages/home/report/ReportActionItem.tsx | 23 +++++++--------- src/pages/iou/request/IOURequestStartPage.tsx | 5 ++-- .../MoneyRequestParticipantsSelector.tsx | 15 +++-------- .../step/IOURequestStepParticipants.tsx | 7 +++-- 9 files changed, 25 insertions(+), 92 deletions(-) diff --git a/src/components/MoneyRequestConfirmationList.tsx b/src/components/MoneyRequestConfirmationList.tsx index 01fd15c52bb..83acbe56f0e 100755 --- a/src/components/MoneyRequestConfirmationList.tsx +++ b/src/components/MoneyRequestConfirmationList.tsx @@ -195,7 +195,6 @@ function MoneyRequestConfirmationList({ const styles = useThemeStyles(); const {translate, toLocaleDigit} = useLocalize(); const currentUserPersonalDetails = useCurrentUserPersonalDetails(); - const {canUseP2PDistanceRequests} = usePermissions(iouType); const isTypeRequest = iouType === CONST.IOU.TYPE.SUBMIT; const isTypeSplit = iouType === CONST.IOU.TYPE.SPLIT; @@ -214,9 +213,9 @@ function MoneyRequestConfirmationList({ const defaultRate = defaultMileageRate?.customUnitRateID ?? ''; const lastSelectedRate = lastSelectedDistanceRates?.[policy?.id ?? ''] ?? defaultRate; - const rateID = canUseP2PDistanceRequests ? lastSelectedRate : defaultRate; + const rateID = lastSelectedRate; IOU.setCustomUnitRateID(transactionID, rateID); - }, [defaultMileageRate, customUnitRateID, lastSelectedDistanceRates, policy?.id, canUseP2PDistanceRequests, transactionID, isDistanceRequest]); + }, [defaultMileageRate, customUnitRateID, lastSelectedDistanceRates, policy?.id, transactionID, isDistanceRequest]); const mileageRate = DistanceRequestUtils.getRate({transaction, policy, policyDraft}); const rate = mileageRate.rate; @@ -879,7 +878,6 @@ function MoneyRequestConfirmationList({ const listFooterContent = ( Navigation.navigate(ROUTES.MONEY_REQUEST_STEP_DISTANCE.getRoute(action, iouType, transactionID, reportID, Navigation.getActiveRouteWithoutParams()))} - disabled={didConfirm} - // todo: handle edit for transaction while moving from track expense - interactive={!isReadOnly && !isMovingTransactionFromTrackExpense} - /> - ), - shouldShow: isDistanceRequest && !canUseP2PDistanceRequests, - isSupplementary: false, - }, { item: ( ), - shouldShow: isDistanceRequest && canUseP2PDistanceRequests, + shouldShow: isDistanceRequest, isSupplementary: false, }, { @@ -398,7 +376,7 @@ function MoneyRequestConfirmationListFooter({ interactive={!!rate && !isReadOnly && isPolicyExpenseChat} /> ), - shouldShow: isDistanceRequest && canUseP2PDistanceRequests, + shouldShow: isDistanceRequest, isSupplementary: false, }, { @@ -692,7 +670,6 @@ export default memo( MoneyRequestConfirmationListFooter, (prevProps, nextProps) => lodashIsEqual(prevProps.action, nextProps.action) && - prevProps.canUseP2PDistanceRequests === nextProps.canUseP2PDistanceRequests && prevProps.currency === nextProps.currency && prevProps.didConfirm === nextProps.didConfirm && prevProps.distance === nextProps.distance && diff --git a/src/components/ReportActionItem/MoneyRequestView.tsx b/src/components/ReportActionItem/MoneyRequestView.tsx index b85ecad20f2..cef53a27c1a 100644 --- a/src/components/ReportActionItem/MoneyRequestView.tsx +++ b/src/components/ReportActionItem/MoneyRequestView.tsx @@ -102,7 +102,6 @@ function MoneyRequestView({report, shouldShowAnimatedBackground, readonly = fals const parentReportAction = parentReportActions?.[report?.parentReportActionID ?? '-1']; const isTrackExpense = ReportUtils.isTrackExpenseReport(report); - const {canUseP2PDistanceRequests} = usePermissions(isTrackExpense ? CONST.IOU.TYPE.TRACK : undefined); const moneyRequestReport = parentReport; const linkedTransactionID = useMemo(() => { const originalMessage = parentReportAction && ReportActionsUtils.isMoneyRequestAction(parentReportAction) ? ReportActionsUtils.getOriginalMessage(parentReportAction) : undefined; @@ -307,7 +306,7 @@ function MoneyRequestView({report, shouldShowAnimatedBackground, readonly = fals [transactionAmount, isSettled, isCancelled, isPolicyExpenseChat, isEmptyMerchant, transactionDate, readonly, hasErrors, hasViolations, translate, getViolationsForField], ); - const distanceRequestFields = canUseP2PDistanceRequests ? ( + const distanceRequestFields = ( <> - ) : ( - - - Navigation.navigate( - ROUTES.MONEY_REQUEST_STEP_DISTANCE.getRoute( - CONST.IOU.ACTION.EDIT, - iouType, - transaction?.transactionID ?? '-1', - report?.reportID ?? '-1', - Navigation.getReportRHPActiveRoute(), - ), - ) - } - /> - ); const isReceiptAllowed = !isPaidReport && !isInvoice; diff --git a/src/libs/DistanceRequestUtils.ts b/src/libs/DistanceRequestUtils.ts index 286f952b348..7087605e24c 100644 --- a/src/libs/DistanceRequestUtils.ts +++ b/src/libs/DistanceRequestUtils.ts @@ -277,7 +277,7 @@ function convertToDistanceInMeters(distance: number, unit: Unit): number { /** * Returns custom unit rate ID for the distance transaction */ -function getCustomUnitRateID(reportID: string, shouldUseDefault?: boolean) { +function getCustomUnitRateID(reportID: string) { const allReports = ReportConnection.getAllReports(); const report = allReports?.[`${ONYXKEYS.COLLECTION.REPORT}${reportID}`]; const parentReport = allReports?.[`${ONYXKEYS.COLLECTION.REPORT}${report?.parentReportID}`]; @@ -288,7 +288,7 @@ function getCustomUnitRateID(reportID: string, shouldUseDefault?: boolean) { const distanceUnit = Object.values(policy?.customUnits ?? {}).find((unit) => unit.name === CONST.CUSTOM_UNITS.NAME_DISTANCE); const lastSelectedDistanceRateID = lastSelectedDistanceRates?.[policy?.id ?? '-1'] ?? '-1'; const lastSelectedDistanceRate = distanceUnit?.rates[lastSelectedDistanceRateID] ?? {}; - if (lastSelectedDistanceRate.enabled && lastSelectedDistanceRateID && !shouldUseDefault) { + if (lastSelectedDistanceRate.enabled && lastSelectedDistanceRateID) { customUnitRateID = lastSelectedDistanceRateID; } else { customUnitRateID = getDefaultMileageRate(policy)?.customUnitRateID ?? '-1'; diff --git a/src/libs/Permissions.ts b/src/libs/Permissions.ts index 009724e73e9..ee44e85185a 100644 --- a/src/libs/Permissions.ts +++ b/src/libs/Permissions.ts @@ -15,11 +15,6 @@ function canUseDupeDetection(betas: OnyxEntry): boolean { return !!betas?.includes(CONST.BETAS.DUPE_DETECTION) || canUseAllBetas(betas); } -function canUseP2PDistanceRequests(betas: OnyxEntry, iouType: IOUType | undefined): boolean { - // Allow using P2P distance request for TrackExpense outside of the beta, because that project doesn't want to be limited by the more cautious P2P distance beta - return !!betas?.includes(CONST.BETAS.P2P_DISTANCE_REQUESTS) || canUseAllBetas(betas) || iouType === CONST.IOU.TYPE.TRACK; -} - function canUseSpotnanaTravel(betas: OnyxEntry): boolean { return !!betas?.includes(CONST.BETAS.SPOTNANA_TRAVEL) || canUseAllBetas(betas); } @@ -60,7 +55,6 @@ export default { canUseDefaultRooms, canUseLinkPreviews, canUseDupeDetection, - canUseP2PDistanceRequests, canUseSpotnanaTravel, canUseCompanyCardFeeds, canUseDirectFeeds, diff --git a/src/pages/home/report/ReportActionItem.tsx b/src/pages/home/report/ReportActionItem.tsx index a0e2f65a89a..418111c8e70 100644 --- a/src/pages/home/report/ReportActionItem.tsx +++ b/src/pages/home/report/ReportActionItem.tsx @@ -198,7 +198,6 @@ function ReportActionItem({ const downloadedPreviews = useRef([]); const prevDraftMessage = usePrevious(draftMessage); const [isUserValidated] = useOnyx(ONYXKEYS.USER, {selector: (user) => !!user?.validated}); - const {canUseP2PDistanceRequests} = usePermissions(); // The app would crash due to subscribing to the entire report collection if parentReportID is an empty string. So we should have a fallback ID here. // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing const [parentReport] = useOnyx(`${ONYXKEYS.COLLECTION.REPORT}${report?.parentReportID || -1}`); @@ -421,18 +420,14 @@ function ReportActionItem({ if (ReportActionsUtils.isActionableTrackExpense(action)) { const transactionID = ReportActionsUtils.getOriginalMessage(action)?.transactionID; return [ - ...(!TransactionUtils.isDistanceRequest(TransactionUtils.getTransaction(transactionID ?? '-1')) || canUseP2PDistanceRequests - ? [ - { - text: 'actionableMentionTrackExpense.submit', - key: `${action.reportActionID}-actionableMentionTrackExpense-submit`, - onPress: () => { - ReportUtils.createDraftTransactionAndNavigateToParticipantSelector(transactionID ?? '0', reportID, CONST.IOU.ACTION.SUBMIT, action.reportActionID); - }, - isMediumSized: true, - } as ActionableItem, - ] - : []), + { + text: 'actionableMentionTrackExpense.submit', + key: `${action.reportActionID}-actionableMentionTrackExpense-submit`, + onPress: () => { + ReportUtils.createDraftTransactionAndNavigateToParticipantSelector(transactionID ?? '0', reportID, CONST.IOU.ACTION.SUBMIT, action.reportActionID); + }, + isMediumSized: true, + }, { text: 'actionableMentionTrackExpense.categorize', key: `${action.reportActionID}-actionableMentionTrackExpense-categorize`, @@ -505,7 +500,7 @@ function ReportActionItem({ onPress: () => Report.resolveActionableMentionWhisper(reportID, action, CONST.REPORT.ACTIONABLE_MENTION_WHISPER_RESOLUTION.NOTHING), }, ]; - }, [action, isActionableWhisper, reportID, canUseP2PDistanceRequests]); + }, [action, isActionableWhisper, reportID]); /** * Get the content of ReportActionItem diff --git a/src/pages/iou/request/IOURequestStartPage.tsx b/src/pages/iou/request/IOURequestStartPage.tsx index 8a6ff75fee8..7b8efd5f6c0 100644 --- a/src/pages/iou/request/IOURequestStartPage.tsx +++ b/src/pages/iou/request/IOURequestStartPage.tsx @@ -47,7 +47,7 @@ function IOURequestStartPage({ // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing const [transaction] = useOnyx(`${ONYXKEYS.COLLECTION.TRANSACTION_DRAFT}${route?.params.transactionID || -1}`); const [allPolicies] = useOnyx(ONYXKEYS.COLLECTION.POLICY); - const {canUseP2PDistanceRequests, canUseCombinedTrackSubmit} = usePermissions(iouType); + const {canUseCombinedTrackSubmit} = usePermissions(iouType); const tabTitles = { [CONST.IOU.TYPE.REQUEST]: translate('iou.submitExpense'), @@ -75,8 +75,7 @@ function IOURequestStartPage({ const isExpenseChat = ReportUtils.isPolicyExpenseChat(report); const isExpenseReport = ReportUtils.isExpenseReport(report); - const shouldDisplayDistanceRequest = - !!canUseCombinedTrackSubmit || !!canUseP2PDistanceRequests || isExpenseChat || isExpenseReport || (isFromGlobalCreate && iouType !== CONST.IOU.TYPE.SPLIT); + const shouldDisplayDistanceRequest = !!canUseCombinedTrackSubmit || isExpenseChat || isExpenseReport || (isFromGlobalCreate && iouType !== CONST.IOU.TYPE.SPLIT); const navigateBack = () => { Navigation.closeRHPFlow(); diff --git a/src/pages/iou/request/MoneyRequestParticipantsSelector.tsx b/src/pages/iou/request/MoneyRequestParticipantsSelector.tsx index 5dcf4dbd2ea..e966a69c9f8 100644 --- a/src/pages/iou/request/MoneyRequestParticipantsSelector.tsx +++ b/src/pages/iou/request/MoneyRequestParticipantsSelector.tsx @@ -79,7 +79,6 @@ function MoneyRequestParticipantsSelector({ const {isOffline} = useNetwork(); const personalDetails = usePersonalDetails(); const {isDismissed} = useDismissedReferralBanners({referralContentType}); - const {canUseP2PDistanceRequests} = usePermissions(); const {didScreenTransitionEnd} = useScreenWrapperTranstionStatus(); const [betas] = useOnyx(ONYXKEYS.BETAS); const [activePolicyID] = useOnyx(ONYXKEYS.NVP_ACTIVE_POLICY_ID); @@ -125,10 +124,8 @@ function MoneyRequestParticipantsSelector({ // sees the option to submit an expense from their admin on their own Workspace Chat. includeOwnedWorkspaceChats: (iouType === CONST.IOU.TYPE.SUBMIT || iouType === CONST.IOU.TYPE.CREATE || iouType === CONST.IOU.TYPE.SPLIT) && action !== CONST.IOU.ACTION.SUBMIT, - // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing - includeP2P: (canUseP2PDistanceRequests || iouRequestType !== CONST.IOU.REQUEST_TYPE.DISTANCE) && !isCategorizeOrShareAction, - // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing - canInviteUser: (canUseP2PDistanceRequests || iouRequestType !== CONST.IOU.REQUEST_TYPE.DISTANCE) && !isCategorizeOrShareAction, + includeP2P: !isCategorizeOrShareAction, + canInviteUser: !isCategorizeOrShareAction, includeInvoiceRooms: iouType === CONST.IOU.TYPE.INVOICE, action, sortByReportTypeInSearch: isPaidGroupPolicy, @@ -141,7 +138,6 @@ function MoneyRequestParticipantsSelector({ action, areOptionsInitialized, betas, - canUseP2PDistanceRequests, didScreenTransitionEnd, iouRequestType, iouType, @@ -168,7 +164,7 @@ function MoneyRequestParticipantsSelector({ const newOptions = OptionsListUtils.filterOptions(defaultOptions, debouncedSearchTerm, { // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing - canInviteUser: (canUseP2PDistanceRequests || iouRequestType !== CONST.IOU.REQUEST_TYPE.DISTANCE) && !isCategorizeOrShareAction, + canInviteUser: !isCategorizeOrShareAction, selectedOptions: participants as Participant[], excludeLogins: CONST.EXPENSIFY_EMAILS, maxRecentReportsToShow: CONST.IOU.MAX_RECENT_REPORTS_TO_SHOW, @@ -176,7 +172,7 @@ function MoneyRequestParticipantsSelector({ preferRecentExpenseReports: action === CONST.IOU.ACTION.CREATE, }); return newOptions; - }, [areOptionsInitialized, defaultOptions, debouncedSearchTerm, participants, isPaidGroupPolicy, canUseP2PDistanceRequests, iouRequestType, isCategorizeOrShareAction, action]); + }, [areOptionsInitialized, defaultOptions, debouncedSearchTerm, participants, isPaidGroupPolicy, iouRequestType, isCategorizeOrShareAction, action]); /** * Returns the sections needed for the OptionsSelector @@ -327,10 +323,7 @@ function MoneyRequestParticipantsSelector({ const hasPolicyExpenseChatParticipant = participants.some((participant) => participant.isPolicyExpenseChat); const shouldShowSplitBillErrorMessage = participants.length > 1 && hasPolicyExpenseChatParticipant; - // canUseP2PDistanceRequests is true if the iouType is track expense, but we don't want to allow splitting distance with track expense yet const isAllowedToSplit = - // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing - (canUseP2PDistanceRequests || iouRequestType !== CONST.IOU.REQUEST_TYPE.DISTANCE) && ![CONST.IOU.TYPE.PAY, CONST.IOU.TYPE.TRACK, CONST.IOU.TYPE.INVOICE].some((option) => option === iouType) && ![CONST.IOU.ACTION.SHARE, CONST.IOU.ACTION.SUBMIT, CONST.IOU.ACTION.CATEGORIZE].some((option) => option === action); diff --git a/src/pages/iou/request/step/IOURequestStepParticipants.tsx b/src/pages/iou/request/step/IOURequestStepParticipants.tsx index 65e04118040..c931d87d77b 100644 --- a/src/pages/iou/request/step/IOURequestStepParticipants.tsx +++ b/src/pages/iou/request/step/IOURequestStepParticipants.tsx @@ -38,7 +38,6 @@ function IOURequestStepParticipants({ const {translate} = useLocalize(); const styles = useThemeStyles(); const isFocused = useIsFocused(); - const {canUseP2PDistanceRequests} = usePermissions(iouType); const [skipConfirmation] = useOnyx(`${ONYXKEYS.COLLECTION.SKIP_CONFIRMATION}${transactionID ?? -1}`); // We need to set selectedReportID if user has navigated back from confirmation page and navigates to confirmation page with already selected participant @@ -91,7 +90,7 @@ function IOURequestStepParticipants({ HttpUtils.cancelPendingRequests(READ_COMMANDS.SEARCH_FOR_REPORTS); const firstParticipantReportID = val.at(0)?.reportID ?? ''; - const rateID = DistanceRequestUtils.getCustomUnitRateID(firstParticipantReportID, !canUseP2PDistanceRequests); + const rateID = DistanceRequestUtils.getCustomUnitRateID(firstParticipantReportID); const isInvoice = iouType === CONST.IOU.TYPE.INVOICE && ReportUtils.isInvoiceRoomWithID(firstParticipantReportID); numberOfParticipants.current = val.length; @@ -108,7 +107,7 @@ function IOURequestStepParticipants({ // When a participant is selected, the reportID needs to be saved because that's the reportID that will be used in the confirmation step. selectedReportID.current = firstParticipantReportID || reportID; }, - [iouType, reportID, transactionID, canUseP2PDistanceRequests], + [iouType, reportID, transactionID], ); const goToNextStep = useCallback(() => { @@ -154,7 +153,7 @@ function IOURequestStepParticipants({ return; } - const rateID = DistanceRequestUtils.getCustomUnitRateID(selfDMReportID, !canUseP2PDistanceRequests); + const rateID = DistanceRequestUtils.getCustomUnitRateID(selfDMReportID); IOU.setCustomUnitRateID(transactionID, rateID); IOU.setMoneyRequestParticipantsFromReport(transactionID, ReportUtils.getReport(selfDMReportID)); const iouConfirmationPageRoute = ROUTES.MONEY_REQUEST_STEP_CONFIRMATION.getRoute(action, CONST.IOU.TYPE.TRACK, transactionID, selfDMReportID); From b3e923a5764e0b708a213d6f1678a977e2344cb8 Mon Sep 17 00:00:00 2001 From: neil-marcellini Date: Tue, 5 Nov 2024 15:01:01 -0800 Subject: [PATCH 2/5] iouType no longer needed for permission checks --- src/components/MoneyRequestConfirmationList.tsx | 1 - src/components/ReportActionItem/MoneyRequestView.tsx | 1 - src/hooks/usePermissions.ts | 7 +++---- src/libs/Permissions.ts | 1 - src/pages/iou/request/IOURequestStartPage.tsx | 2 +- 5 files changed, 4 insertions(+), 8 deletions(-) diff --git a/src/components/MoneyRequestConfirmationList.tsx b/src/components/MoneyRequestConfirmationList.tsx index 83acbe56f0e..8ef4e1c135e 100755 --- a/src/components/MoneyRequestConfirmationList.tsx +++ b/src/components/MoneyRequestConfirmationList.tsx @@ -8,7 +8,6 @@ import useCurrentUserPersonalDetails from '@hooks/useCurrentUserPersonalDetails' import useDebouncedState from '@hooks/useDebouncedState'; import useLocalize from '@hooks/useLocalize'; import {MouseProvider} from '@hooks/useMouseContext'; -import usePermissions from '@hooks/usePermissions'; import usePrevious from '@hooks/usePrevious'; import useThemeStyles from '@hooks/useThemeStyles'; import blurActiveElement from '@libs/Accessibility/blurActiveElement'; diff --git a/src/components/ReportActionItem/MoneyRequestView.tsx b/src/components/ReportActionItem/MoneyRequestView.tsx index cef53a27c1a..994d9e2c0f6 100644 --- a/src/components/ReportActionItem/MoneyRequestView.tsx +++ b/src/components/ReportActionItem/MoneyRequestView.tsx @@ -15,7 +15,6 @@ import ViolationMessages from '@components/ViolationMessages'; import useCurrentUserPersonalDetails from '@hooks/useCurrentUserPersonalDetails'; import useLocalize from '@hooks/useLocalize'; import useNetwork from '@hooks/useNetwork'; -import usePermissions from '@hooks/usePermissions'; import useTheme from '@hooks/useTheme'; import useThemeStyles from '@hooks/useThemeStyles'; import useViolations from '@hooks/useViolations'; diff --git a/src/hooks/usePermissions.ts b/src/hooks/usePermissions.ts index 22200304fdd..e60825b610e 100644 --- a/src/hooks/usePermissions.ts +++ b/src/hooks/usePermissions.ts @@ -1,13 +1,12 @@ import {useContext, useMemo} from 'react'; import {BetasContext} from '@components/OnyxProvider'; import Permissions from '@libs/Permissions'; -import type {IOUType} from '@src/CONST'; type PermissionKey = keyof typeof Permissions; type UsePermissions = Partial>; let permissionKey: PermissionKey; -export default function usePermissions(iouType: IOUType | undefined = undefined): UsePermissions { +export default function usePermissions(): UsePermissions { const betas = useContext(BetasContext); return useMemo(() => { const permissions: UsePermissions = {}; @@ -16,10 +15,10 @@ export default function usePermissions(iouType: IOUType | undefined = undefined) if (betas) { const checkerFunction = Permissions[permissionKey]; - permissions[permissionKey] = checkerFunction(betas, iouType); + permissions[permissionKey] = checkerFunction(betas); } } return permissions; - }, [betas, iouType]); + }, [betas]); } diff --git a/src/libs/Permissions.ts b/src/libs/Permissions.ts index ee44e85185a..c95ba460a0e 100644 --- a/src/libs/Permissions.ts +++ b/src/libs/Permissions.ts @@ -1,6 +1,5 @@ import type {OnyxEntry} from 'react-native-onyx'; import CONST from '@src/CONST'; -import type {IOUType} from '@src/CONST'; import type Beta from '@src/types/onyx/Beta'; function canUseAllBetas(betas: OnyxEntry): boolean { diff --git a/src/pages/iou/request/IOURequestStartPage.tsx b/src/pages/iou/request/IOURequestStartPage.tsx index 7b8efd5f6c0..77030b3e72c 100644 --- a/src/pages/iou/request/IOURequestStartPage.tsx +++ b/src/pages/iou/request/IOURequestStartPage.tsx @@ -47,7 +47,7 @@ function IOURequestStartPage({ // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing const [transaction] = useOnyx(`${ONYXKEYS.COLLECTION.TRANSACTION_DRAFT}${route?.params.transactionID || -1}`); const [allPolicies] = useOnyx(ONYXKEYS.COLLECTION.POLICY); - const {canUseCombinedTrackSubmit} = usePermissions(iouType); + const {canUseCombinedTrackSubmit} = usePermissions(); const tabTitles = { [CONST.IOU.TYPE.REQUEST]: translate('iou.submitExpense'), From 3840afe8647e2982a7f1cd23a279f262d42f21ba Mon Sep 17 00:00:00 2001 From: neil-marcellini Date: Tue, 5 Nov 2024 15:14:01 -0800 Subject: [PATCH 3/5] Fix linter --- .../MoneyRequestConfirmationListFooter.tsx | 5 ---- src/pages/home/report/ReportActionItem.tsx | 2 -- .../MoneyRequestParticipantsSelector.tsx | 29 +++---------------- .../step/IOURequestStepParticipants.tsx | 1 - 4 files changed, 4 insertions(+), 33 deletions(-) diff --git a/src/components/MoneyRequestConfirmationListFooter.tsx b/src/components/MoneyRequestConfirmationListFooter.tsx index 73f5b0748be..fe04fea81e7 100644 --- a/src/components/MoneyRequestConfirmationListFooter.tsx +++ b/src/components/MoneyRequestConfirmationListFooter.tsx @@ -102,9 +102,6 @@ type MoneyRequestConfirmationListFooterProps = { /** Flag indicating if the merchant is required */ isMerchantRequired: boolean | undefined; - /** Flag indicating if the transaction is moved from track expense */ - isMovingTransactionFromTrackExpense: boolean; - /** Flag indicating if it is a policy expense chat */ isPolicyExpenseChat: boolean; @@ -194,7 +191,6 @@ function MoneyRequestConfirmationListFooter({ isEditingSplitBill, isMerchantEmpty, isMerchantRequired, - isMovingTransactionFromTrackExpense, isPolicyExpenseChat, isReadOnly, isTypeInvoice, @@ -688,7 +684,6 @@ export default memo( prevProps.isEditingSplitBill === nextProps.isEditingSplitBill && prevProps.isMerchantEmpty === nextProps.isMerchantEmpty && prevProps.isMerchantRequired === nextProps.isMerchantRequired && - prevProps.isMovingTransactionFromTrackExpense === nextProps.isMovingTransactionFromTrackExpense && prevProps.isPolicyExpenseChat === nextProps.isPolicyExpenseChat && prevProps.isReadOnly === nextProps.isReadOnly && prevProps.isTypeInvoice === nextProps.isTypeInvoice && diff --git a/src/pages/home/report/ReportActionItem.tsx b/src/pages/home/report/ReportActionItem.tsx index 418111c8e70..2953036f6af 100644 --- a/src/pages/home/report/ReportActionItem.tsx +++ b/src/pages/home/report/ReportActionItem.tsx @@ -33,7 +33,6 @@ import {ShowContextMenuContext} from '@components/ShowContextMenuContext'; import Text from '@components/Text'; import UnreadActionIndicator from '@components/UnreadActionIndicator'; import useLocalize from '@hooks/useLocalize'; -import usePermissions from '@hooks/usePermissions'; import usePrevious from '@hooks/usePrevious'; import useReportScrollManager from '@hooks/useReportScrollManager'; import useResponsiveLayout from '@hooks/useResponsiveLayout'; @@ -53,7 +52,6 @@ import * as ReportActionsUtils from '@libs/ReportActionsUtils'; import * as ReportUtils from '@libs/ReportUtils'; import SelectionScraper from '@libs/SelectionScraper'; import shouldRenderAddPaymentCard from '@libs/shouldRenderAppPaymentCard'; -import * as TransactionUtils from '@libs/TransactionUtils'; import {ReactionListContext} from '@pages/home/ReportScreenContext'; import * as BankAccounts from '@userActions/BankAccounts'; import * as EmojiPickerAction from '@userActions/EmojiPickerAction'; diff --git a/src/pages/iou/request/MoneyRequestParticipantsSelector.tsx b/src/pages/iou/request/MoneyRequestParticipantsSelector.tsx index e966a69c9f8..df8d7797b41 100644 --- a/src/pages/iou/request/MoneyRequestParticipantsSelector.tsx +++ b/src/pages/iou/request/MoneyRequestParticipantsSelector.tsx @@ -18,7 +18,6 @@ import useDebouncedState from '@hooks/useDebouncedState'; import useDismissedReferralBanners from '@hooks/useDismissedReferralBanners'; import useLocalize from '@hooks/useLocalize'; import useNetwork from '@hooks/useNetwork'; -import usePermissions from '@hooks/usePermissions'; import usePolicy from '@hooks/usePolicy'; import useScreenWrapperTranstionStatus from '@hooks/useScreenWrapperTransitionStatus'; import useThemeStyles from '@hooks/useThemeStyles'; @@ -30,7 +29,7 @@ import * as ReportUtils from '@libs/ReportUtils'; import * as SubscriptionUtils from '@libs/SubscriptionUtils'; import * as Policy from '@userActions/Policy/Policy'; import * as Report from '@userActions/Report'; -import type {IOUAction, IOURequestType, IOUType} from '@src/CONST'; +import type {IOUAction, IOUType} from '@src/CONST'; import CONST from '@src/CONST'; import ONYXKEYS from '@src/ONYXKEYS'; import ROUTES from '@src/ROUTES'; @@ -52,9 +51,6 @@ type MoneyRequestParticipantsSelectorProps = { /** The type of IOU report, i.e. split, request, send, track */ iouType: IOUType; - /** The expense type, ie. manual, scan, distance */ - iouRequestType: IOURequestType; - /** The action of the IOU, i.e. create, split, move */ action: IOUAction; @@ -68,7 +64,6 @@ function MoneyRequestParticipantsSelector({ onFinish, onParticipantsAdded, iouType, - iouRequestType, action, shouldDisplayTrackExpenseButton, }: MoneyRequestParticipantsSelectorProps) { @@ -134,19 +129,7 @@ function MoneyRequestParticipantsSelector({ }); return optionList; - }, [ - action, - areOptionsInitialized, - betas, - didScreenTransitionEnd, - iouRequestType, - iouType, - isCategorizeOrShareAction, - options.personalDetails, - options.reports, - participants, - isPaidGroupPolicy, - ]); + }, [action, areOptionsInitialized, betas, didScreenTransitionEnd, iouType, isCategorizeOrShareAction, options.personalDetails, options.reports, participants, isPaidGroupPolicy]); const chatOptions = useMemo(() => { if (!areOptionsInitialized) { @@ -172,7 +155,7 @@ function MoneyRequestParticipantsSelector({ preferRecentExpenseReports: action === CONST.IOU.ACTION.CREATE, }); return newOptions; - }, [areOptionsInitialized, defaultOptions, debouncedSearchTerm, participants, isPaidGroupPolicy, iouRequestType, isCategorizeOrShareAction, action]); + }, [areOptionsInitialized, defaultOptions, debouncedSearchTerm, participants, isPaidGroupPolicy, isCategorizeOrShareAction, action]); /** * Returns the sections needed for the OptionsSelector @@ -476,8 +459,4 @@ function MoneyRequestParticipantsSelector({ MoneyRequestParticipantsSelector.displayName = 'MoneyTemporaryForRefactorRequestParticipantsSelector'; -export default memo( - MoneyRequestParticipantsSelector, - (prevProps, nextProps) => - lodashIsEqual(prevProps.participants, nextProps.participants) && prevProps.iouRequestType === nextProps.iouRequestType && prevProps.iouType === nextProps.iouType, -); +export default memo(MoneyRequestParticipantsSelector, (prevProps, nextProps) => lodashIsEqual(prevProps.participants, nextProps.participants) && prevProps.iouType === nextProps.iouType); diff --git a/src/pages/iou/request/step/IOURequestStepParticipants.tsx b/src/pages/iou/request/step/IOURequestStepParticipants.tsx index c931d87d77b..d01b7a1e27d 100644 --- a/src/pages/iou/request/step/IOURequestStepParticipants.tsx +++ b/src/pages/iou/request/step/IOURequestStepParticipants.tsx @@ -3,7 +3,6 @@ import React, {useCallback, useEffect, useMemo, useRef} from 'react'; import {useOnyx} from 'react-native-onyx'; import FormHelpMessage from '@components/FormHelpMessage'; import useLocalize from '@hooks/useLocalize'; -import usePermissions from '@hooks/usePermissions'; import useThemeStyles from '@hooks/useThemeStyles'; import {READ_COMMANDS} from '@libs/API/types'; import DistanceRequestUtils from '@libs/DistanceRequestUtils'; From e0cd4dbe4e723c9d5b7bbcef868bd44c69b961fd Mon Sep 17 00:00:00 2001 From: neil-marcellini Date: Tue, 5 Nov 2024 15:21:59 -0800 Subject: [PATCH 4/5] Fix typescript --- src/components/MoneyRequestConfirmationList.tsx | 1 - src/pages/iou/request/step/IOURequestStepParticipants.tsx | 1 - 2 files changed, 2 deletions(-) diff --git a/src/components/MoneyRequestConfirmationList.tsx b/src/components/MoneyRequestConfirmationList.tsx index 8ef4e1c135e..a9132610821 100755 --- a/src/components/MoneyRequestConfirmationList.tsx +++ b/src/components/MoneyRequestConfirmationList.tsx @@ -897,7 +897,6 @@ function MoneyRequestConfirmationList({ isEditingSplitBill={isEditingSplitBill} isMerchantEmpty={isMerchantEmpty} isMerchantRequired={isMerchantRequired} - isMovingTransactionFromTrackExpense={isMovingTransactionFromTrackExpense} isPolicyExpenseChat={isPolicyExpenseChat} isReadOnly={isReadOnly} isTypeInvoice={isTypeInvoice} diff --git a/src/pages/iou/request/step/IOURequestStepParticipants.tsx b/src/pages/iou/request/step/IOURequestStepParticipants.tsx index d01b7a1e27d..c956acadb7b 100644 --- a/src/pages/iou/request/step/IOURequestStepParticipants.tsx +++ b/src/pages/iou/request/step/IOURequestStepParticipants.tsx @@ -190,7 +190,6 @@ function IOURequestStepParticipants({ onFinish={goToNextStep} onTrackExpensePress={trackExpense} iouType={iouType} - iouRequestType={iouRequestType} action={action} shouldDisplayTrackExpenseButton={shouldDisplayTrackExpenseButton} /> From 692d2507a5cefba189f6342ac88a4a5d53a06186 Mon Sep 17 00:00:00 2001 From: neil-marcellini Date: Wed, 6 Nov 2024 11:14:19 -0800 Subject: [PATCH 5/5] Always display distance tab --- src/pages/iou/request/IOURequestStartPage.tsx | 20 +++++++------------ 1 file changed, 7 insertions(+), 13 deletions(-) diff --git a/src/pages/iou/request/IOURequestStartPage.tsx b/src/pages/iou/request/IOURequestStartPage.tsx index 77030b3e72c..f095fac4d6b 100644 --- a/src/pages/iou/request/IOURequestStartPage.tsx +++ b/src/pages/iou/request/IOURequestStartPage.tsx @@ -73,10 +73,6 @@ function IOURequestStartPage({ IOU.initMoneyRequest(reportID, policy, isFromGlobalCreate, transaction?.iouRequestType, transactionRequestType); }, [transaction, policy, reportID, iouType, isFromGlobalCreate, transactionRequestType, isLoadingSelectedTab]); - const isExpenseChat = ReportUtils.isPolicyExpenseChat(report); - const isExpenseReport = ReportUtils.isExpenseReport(report); - const shouldDisplayDistanceRequest = !!canUseCombinedTrackSubmit || isExpenseChat || isExpenseReport || (isFromGlobalCreate && iouType !== CONST.IOU.TYPE.SPLIT); - const navigateBack = () => { Navigation.closeRHPFlow(); }; @@ -163,15 +159,13 @@ function IOURequestStartPage({ )} - {shouldDisplayDistanceRequest && ( - - {() => ( - - - - )} - - )} + + {() => ( + + + + )} + ) : (