Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions src/ROUTES.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1005,6 +1005,16 @@ const ROUTES = {
return getUrlWithBackToParam(`${action as string}/${iouType as string}/distance/${transactionID}/${reportID}${reportActionID ? `/${reportActionID}` : ''}`, backTo);
},
},
MONEY_REQUEST_STEP_DISTANCE_MANUAL: {
route: ':action/:iouType/distance-manual/:transactionID/:reportID/:reportActionID?',
getRoute: (action: IOUAction, iouType: IOUType, transactionID: string | undefined, reportID: string | undefined, backTo = '', reportActionID?: string) => {
if (!transactionID || !reportID) {
Log.warn('Invalid transactionID or reportID is used to build the MONEY_REQUEST_STEP_DISTANCE_MANUAL route');
}
// eslint-disable-next-line no-restricted-syntax -- Legacy route generation
return getUrlWithBackToParam(`${action as string}/${iouType as string}/distance-manual/${transactionID}/${reportID}${reportActionID ? `/${reportActionID}` : ''}`, backTo);
},
},
MONEY_REQUEST_STEP_DISTANCE_RATE: {
route: ':action/:iouType/distanceRate/:transactionID/:reportID/:reportActionID?',
getRoute: (action: IOUAction, iouType: IOUType, transactionID: string | undefined, reportID: string | undefined, backTo = '', reportActionID?: string) => {
Expand Down
5 changes: 5 additions & 0 deletions src/components/MoneyRequestConfirmationListFooter.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -473,6 +473,11 @@ function MoneyRequestConfirmationListFooter({
return;
}

if (isManualDistanceRequest) {
Navigation.navigate(ROUTES.MONEY_REQUEST_STEP_DISTANCE_MANUAL.getRoute(action, iouType, transactionID, reportID, Navigation.getActiveRoute(), reportActionID));
return;
}

Navigation.navigate(ROUTES.MONEY_REQUEST_STEP_DISTANCE.getRoute(action, iouType, transactionID, reportID, Navigation.getActiveRoute(), reportActionID));
}}
disabled={didConfirm}
Expand Down
8 changes: 8 additions & 0 deletions src/components/ReportActionItem/MoneyRequestView.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -434,6 +434,14 @@ function MoneyRequestView({
if (!transaction?.transactionID || !report?.reportID) {
return;
}

if (isManualDistanceRequest) {
Navigation.navigate(
ROUTES.MONEY_REQUEST_STEP_DISTANCE_MANUAL.getRoute(CONST.IOU.ACTION.EDIT, iouType, transaction.transactionID, report.reportID, getReportRHPActiveRoute()),
);
return;
}

Navigation.navigate(
ROUTES.MONEY_REQUEST_STEP_DISTANCE.getRoute(CONST.IOU.ACTION.EDIT, iouType, transaction.transactionID, report.reportID, getReportRHPActiveRoute()),
);
Expand Down
1 change: 1 addition & 0 deletions src/libs/Navigation/linkingConfig/config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1326,6 +1326,7 @@ const config: LinkingOptions<RootNavigatorParamList>['config'] = {
[SCREENS.MONEY_REQUEST.STEP_DATE]: ROUTES.MONEY_REQUEST_STEP_DATE.route,
[SCREENS.MONEY_REQUEST.STEP_DESCRIPTION]: ROUTES.MONEY_REQUEST_STEP_DESCRIPTION.route,
[SCREENS.MONEY_REQUEST.STEP_DISTANCE]: ROUTES.MONEY_REQUEST_STEP_DISTANCE.route,
[SCREENS.MONEY_REQUEST.STEP_DISTANCE_MANUAL]: ROUTES.MONEY_REQUEST_STEP_DISTANCE_MANUAL.route,
[SCREENS.MONEY_REQUEST.STEP_DISTANCE_RATE]: ROUTES.MONEY_REQUEST_STEP_DISTANCE_RATE.route,
[SCREENS.MONEY_REQUEST.HOLD]: ROUTES.MONEY_REQUEST_HOLD_REASON.route,
[SCREENS.MONEY_REQUEST.REJECT]: ROUTES.REJECT_MONEY_REQUEST_REASON.route,
Expand Down
35 changes: 18 additions & 17 deletions src/libs/Navigation/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1396,6 +1396,24 @@ type MoneyRequestNavigatorParamList = {
backToReport?: string;
reportActionID?: string;
};
[SCREENS.MONEY_REQUEST.STEP_DISTANCE_MAP]: {
action: IOUAction;
iouType: IOUType;
transactionID: string;
reportID: string;
backTo: Routes;
backToReport?: string;
reportActionID?: string;
};
[SCREENS.MONEY_REQUEST.STEP_DISTANCE_MANUAL]: {
action: IOUAction;
iouType: IOUType;
transactionID: string;
reportID: string;
backTo: Routes;
backToReport?: string;
reportActionID?: string;
};
[SCREENS.MONEY_REQUEST.CREATE]: {
iouType: IOUType;
reportID: string;
Expand Down Expand Up @@ -1569,23 +1587,6 @@ type MoneyRequestNavigatorParamList = {
backToReport?: string;
reportActionID?: string;
};
[SCREENS.MONEY_REQUEST.STEP_DISTANCE_MANUAL]: {
action: IOUAction;
iouType: IOUType;
transactionID: string;
reportID: string;
backTo: Routes;
backToReport?: string;
};
[SCREENS.MONEY_REQUEST.STEP_DISTANCE_MAP]: {
action: IOUAction;
iouType: IOUType;
transactionID: string;
reportID: string;
backTo: Routes;
backToReport?: string;
reportActionID?: string;
};
Comment on lines -1572 to -1588

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we need these changes?

};

type WorkspaceConfirmationNavigatorParamList = {
Expand Down
20 changes: 14 additions & 6 deletions src/libs/ReportUtils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -257,7 +257,7 @@
isDistanceRequest,
isExpensifyCardTransaction,
isFetchingWaypointsFromServer,
isManualDistanceRequest,
isManualDistanceRequest as isManualDistanceRequestTransactionUtils,
isOnHold as isOnHoldTransactionUtils,
isPayAtEndExpense,
isPending,
Expand Down Expand Up @@ -717,6 +717,7 @@
originalAmount: number;
originalCurrency: string;
postedDate: string;
distance?: number;
};

type OptimisticIOUReport = Pick<
Expand Down Expand Up @@ -916,7 +917,7 @@
const parsedReportActionMessageCache: Record<string, string> = {};

let conciergeReportID: OnyxEntry<string>;
Onyx.connect({

Check warning on line 920 in src/libs/ReportUtils.ts

View workflow job for this annotation

GitHub Actions / Changed files ESLint check

Onyx.connect() is deprecated. Use useOnyx() hook instead and pass the data as parameters to a pure function
key: ONYXKEYS.CONCIERGE_REPORT_ID,
callback: (value) => {
conciergeReportID = value;
Expand All @@ -924,7 +925,7 @@
});

const defaultAvatarBuildingIconTestID = 'SvgDefaultAvatarBuilding Icon';
Onyx.connect({

Check warning on line 928 in src/libs/ReportUtils.ts

View workflow job for this annotation

GitHub Actions / Changed files ESLint check

Onyx.connect() is deprecated. Use useOnyx() hook instead and pass the data as parameters to a pure function
key: ONYXKEYS.SESSION,
callback: (value) => {
// When signed out, val is undefined
Expand All @@ -942,7 +943,7 @@
let allPersonalDetails: OnyxEntry<PersonalDetailsList>;
let allPersonalDetailLogins: string[];
let currentUserPersonalDetails: OnyxEntry<PersonalDetails>;
Onyx.connect({

Check warning on line 946 in src/libs/ReportUtils.ts

View workflow job for this annotation

GitHub Actions / Changed files ESLint check

Onyx.connect() is deprecated. Use useOnyx() hook instead and pass the data as parameters to a pure function
key: ONYXKEYS.PERSONAL_DETAILS_LIST,
callback: (value) => {
if (currentUserAccountID) {
Expand All @@ -954,14 +955,14 @@
});

let allReportsDraft: OnyxCollection<Report>;
Onyx.connect({

Check warning on line 958 in src/libs/ReportUtils.ts

View workflow job for this annotation

GitHub Actions / Changed files ESLint check

Onyx.connect() is deprecated. Use useOnyx() hook instead and pass the data as parameters to a pure function
key: ONYXKEYS.COLLECTION.REPORT_DRAFT,
waitForCollectionCallback: true,
callback: (value) => (allReportsDraft = value),
});

let allPolicies: OnyxCollection<Policy>;
Onyx.connect({

Check warning on line 965 in src/libs/ReportUtils.ts

View workflow job for this annotation

GitHub Actions / Changed files ESLint check

Onyx.connect() is deprecated. Use useOnyx() hook instead and pass the data as parameters to a pure function
key: ONYXKEYS.COLLECTION.POLICY,
waitForCollectionCallback: true,
callback: (value) => (allPolicies = value),
Expand All @@ -969,7 +970,7 @@

let allReports: OnyxCollection<Report>;
let reportsByPolicyID: ReportByPolicyMap;
Onyx.connect({

Check warning on line 973 in src/libs/ReportUtils.ts

View workflow job for this annotation

GitHub Actions / Changed files ESLint check

Onyx.connect() is deprecated. Use useOnyx() hook instead and pass the data as parameters to a pure function
key: ONYXKEYS.COLLECTION.REPORT,
waitForCollectionCallback: true,
callback: (value) => {
Expand Down Expand Up @@ -1010,14 +1011,14 @@
});

let allBetas: OnyxEntry<Beta[]>;
Onyx.connect({

Check warning on line 1014 in src/libs/ReportUtils.ts

View workflow job for this annotation

GitHub Actions / Changed files ESLint check

Onyx.connect() is deprecated. Use useOnyx() hook instead and pass the data as parameters to a pure function
key: ONYXKEYS.BETAS,
callback: (value) => (allBetas = value),
});

let allTransactions: OnyxCollection<Transaction> = {};
let reportsTransactions: Record<string, Transaction[]> = {};
Onyx.connect({

Check warning on line 1021 in src/libs/ReportUtils.ts

View workflow job for this annotation

GitHub Actions / Changed files ESLint check

Onyx.connect() is deprecated. Use useOnyx() hook instead and pass the data as parameters to a pure function
key: ONYXKEYS.COLLECTION.TRANSACTION,
waitForCollectionCallback: true,
callback: (value) => {
Expand All @@ -1043,7 +1044,7 @@
});

let allReportActions: OnyxCollection<ReportActions>;
Onyx.connect({

Check warning on line 1047 in src/libs/ReportUtils.ts

View workflow job for this annotation

GitHub Actions / Changed files ESLint check

Onyx.connect() is deprecated. Use useOnyx() hook instead and pass the data as parameters to a pure function
key: ONYXKEYS.COLLECTION.REPORT_ACTIONS,
waitForCollectionCallback: true,
callback: (actions) => {
Expand All @@ -1056,7 +1057,7 @@

let allReportMetadata: OnyxCollection<ReportMetadata>;
const allReportMetadataKeyValue: Record<string, ReportMetadata> = {};
Onyx.connect({

Check warning on line 1060 in src/libs/ReportUtils.ts

View workflow job for this annotation

GitHub Actions / Changed files ESLint check

Onyx.connect() is deprecated. Use useOnyx() hook instead and pass the data as parameters to a pure function
key: ONYXKEYS.COLLECTION.REPORT_METADATA,
waitForCollectionCallback: true,
callback: (value) => {
Expand Down Expand Up @@ -4022,6 +4023,8 @@
return;
}
const report = getReportOrDraftReport(transaction?.reportID);
const isManualDistanceRequest = isManualDistanceRequestTransactionUtils(transaction);

return {
created: getFormattedCreated(transaction, createdDateFormat),
amount: getTransactionAmount(transaction, !isEmptyObject(report) && isExpenseReport(report), transaction?.reportID === CONST.REPORT.UNREPORTED_REPORT_ID),
Expand All @@ -4043,6 +4046,7 @@
originalAmount: getOriginalAmount(transaction),
originalCurrency: getOriginalCurrency(transaction),
postedDate: getFormattedPostedDate(transaction),
...(isManualDistanceRequest && {distance: transaction.comment?.customUnit?.quantity ?? undefined}),
};
}

Expand Down Expand Up @@ -4291,7 +4295,7 @@
!isInvoiceReport(moneyRequestReport) &&
!isReceiptBeingScanned(transaction) &&
!isPerDiemRequest(transaction) &&
(!isDistanceRequest(transaction) || isManualDistanceRequest(transaction)) &&
(!isDistanceRequest(transaction) || isManualDistanceRequestTransactionUtils(transaction)) &&
(isAdmin || isManager || isRequestor) &&
(isDeleteAction ? isRequestor : true)
);
Expand Down Expand Up @@ -4877,15 +4881,19 @@
originalMessage.billable = transactionChanges?.billable ? translateLocal('common.billable').toLowerCase() : translateLocal('common.nonBillable').toLowerCase();
}

if ('customUnitRateID' in transactionChanges && updatedTransaction?.comment?.customUnit?.customUnitRateID) {
if (
// eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing
('customUnitRateID' in transactionChanges && updatedTransaction?.comment?.customUnit?.customUnitRateID) ||
('distance' in transactionChanges && updatedTransaction?.comment?.customUnit?.quantity)
) {
originalMessage.oldAmount = getTransactionAmount(oldTransaction, isFromExpenseReport);
originalMessage.oldCurrency = getCurrency(oldTransaction);
originalMessage.oldMerchant = getMerchant(oldTransaction);

// For the originalMessage, we should use the non-negative amount, similar to what getAmount does for oldAmount
originalMessage.amount = Math.abs(updatedTransaction.modifiedAmount ?? 0);
originalMessage.currency = updatedTransaction.modifiedCurrency ?? CONST.CURRENCY.USD;
originalMessage.merchant = updatedTransaction.modifiedMerchant;
originalMessage.amount = Math.abs(updatedTransaction?.modifiedAmount ?? 0);
originalMessage.currency = updatedTransaction?.modifiedCurrency ?? CONST.CURRENCY.USD;
originalMessage.merchant = updatedTransaction?.modifiedMerchant;
}

return originalMessage;
Expand Down
27 changes: 27 additions & 0 deletions src/libs/TransactionUtils/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -589,6 +589,28 @@ function getUpdatedTransaction({
updatedTransaction.receipt.state = CONST.IOU.RECEIPT_STATE.OPEN;
}

if (Object.hasOwn(transactionChanges, 'distance') && typeof transactionChanges.distance === 'number') {
const distance = roundToTwoDecimalPlaces(transactionChanges.distance ?? 0);

lodashSet(updatedTransaction, 'comment.customUnit.quantity', distance);
shouldStopSmartscan = true;

const updatedMileageRate = DistanceRequestUtils.getRate({transaction: updatedTransaction, policy, useTransactionDistanceUnit: false});
const {unit, rate} = updatedMileageRate;

const distanceInMeters = getDistanceInMeters(updatedTransaction, unit);
let amount = DistanceRequestUtils.getDistanceRequestAmount(distanceInMeters, unit, rate ?? 0);
amount = isFromExpenseReport || isUnReportedExpense ? -amount : amount;
const updatedCurrency = updatedMileageRate.currency ?? CONST.CURRENCY.USD;
const updatedMerchant = DistanceRequestUtils.getDistanceMerchant(true, distanceInMeters, unit, rate, updatedCurrency, translateLocal, (digit) =>
toLocaleDigit(IntlStore.getCurrentLocale(), digit),
);

updatedTransaction.modifiedAmount = amount;
updatedTransaction.modifiedMerchant = updatedMerchant;
updatedTransaction.modifiedCurrency = updatedCurrency;
}

updatedTransaction.pendingFields = {
...(updatedTransaction?.pendingFields ?? {}),
...(Object.hasOwn(transactionChanges, 'comment') && {comment: CONST.RED_BRICK_ROAD_PENDING_ACTION.UPDATE}),
Expand All @@ -604,6 +626,11 @@ function getUpdatedTransaction({
...(Object.hasOwn(transactionChanges, 'taxAmount') && {taxAmount: CONST.RED_BRICK_ROAD_PENDING_ACTION.UPDATE}),
...(Object.hasOwn(transactionChanges, 'taxCode') && {taxCode: CONST.RED_BRICK_ROAD_PENDING_ACTION.UPDATE}),
...(Object.hasOwn(transactionChanges, 'attendees') && {attendees: CONST.RED_BRICK_ROAD_PENDING_ACTION.UPDATE}),
...(Object.hasOwn(transactionChanges, 'distance') && {
quantity: CONST.RED_BRICK_ROAD_PENDING_ACTION.UPDATE,
amount: CONST.RED_BRICK_ROAD_PENDING_ACTION.UPDATE,
merchant: CONST.RED_BRICK_ROAD_PENDING_ACTION.UPDATE,
}),
};

return updatedTransaction;
Expand Down
22 changes: 13 additions & 9 deletions src/libs/actions/IOU.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4306,7 +4306,6 @@ function getUpdateMoneyRequestParams(
key: `${ONYXKEYS.COLLECTION.TRANSACTION}${transactionID}`,
value: {
...updatedTransaction,
pendingFields,

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you please quickly explain why this was removed? I guess it's probably handled elsewhere already?

@allroundexperts allroundexperts Sep 14, 2025

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This was removed because it was overriding the pending fields returned from the updatedTransaction here. Since we were essentially ignoring the pending fields returned from the updatedTransaction, the distance and amount were not being greyed when offline.

errorFields: null,
},
});
Expand Down Expand Up @@ -4869,7 +4868,8 @@ function updateMoneyRequestTaxRate({transactionID, optimisticReportActionID, tax
type UpdateMoneyRequestDistanceParams = {
transactionID: string | undefined;
transactionThreadReportID: string | undefined;
waypoints: WaypointCollection;
waypoints?: WaypointCollection;
distance?: number;
routes?: Routes;
policy?: OnyxEntry<OnyxTypes.Policy>;
policyTagList?: OnyxEntry<OnyxTypes.PolicyTagLists>;
Expand All @@ -4882,15 +4882,17 @@ function updateMoneyRequestDistance({
transactionID,
transactionThreadReportID,
waypoints,
distance,
routes = undefined,
policy = {} as OnyxTypes.Policy,
policyTagList = {},
policyCategories = {},
transactionBackup,
}: UpdateMoneyRequestDistanceParams) {
const transactionChanges: TransactionChanges = {
waypoints: sanitizeRecentWaypoints(waypoints),
...(waypoints && {waypoints: sanitizeRecentWaypoints(waypoints)}),
routes,
...(distance && {distance}),
};
const transactionThreadReport = allReports?.[`${ONYXKEYS.COLLECTION.REPORT}${transactionThreadReportID}`] ?? null;
const parentReport = allReports?.[`${ONYXKEYS.COLLECTION.REPORT}${transactionThreadReport?.parentReportID}`] ?? null;
Expand All @@ -4902,12 +4904,14 @@ function updateMoneyRequestDistance({
}
const {params, onyxData} = data;

const recentServerValidatedWaypoints = getRecentWaypoints().filter((item) => !item.pendingAction);
onyxData?.failureData?.push({
onyxMethod: Onyx.METHOD.SET,
key: `${ONYXKEYS.NVP_RECENT_WAYPOINTS}`,
value: recentServerValidatedWaypoints,
});
if (!distance) {
const recentServerValidatedWaypoints = getRecentWaypoints().filter((item) => !item.pendingAction);
onyxData?.failureData?.push({
onyxMethod: Onyx.METHOD.SET,
key: `${ONYXKEYS.NVP_RECENT_WAYPOINTS}`,
value: recentServerValidatedWaypoints,
});
}

if (transactionBackup) {
const transaction = allTransactions?.[`${ONYXKEYS.COLLECTION.TRANSACTION}${transactionID}`];
Expand Down
17 changes: 13 additions & 4 deletions src/pages/iou/request/step/IOURequestStepConfirmation.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,17 @@ import {getParticipantsOption, getReportOption} from '@libs/OptionsListUtils';
import Performance from '@libs/Performance';
import {isPaidGroupPolicy} from '@libs/PolicyUtils';
import {generateReportID, getReportOrDraftReport, isProcessingReport, isReportOutstanding, isSelectedManagerMcTest} from '@libs/ReportUtils';
import {getAttendees, getDefaultTaxCode, getRateID, getRequestType, getValidWaypoints, hasReceipt, isScanRequest} from '@libs/TransactionUtils';
import {
getAttendees,
getDefaultTaxCode,
getRateID,
getRequestType,
getValidWaypoints,
hasReceipt,
isDistanceRequest as isDistanceRequestTransactionUtils,
isManualDistanceRequest as isManualDistanceRequestTransactionUtils,
isScanRequest,
} from '@libs/TransactionUtils';
import type {FileObject} from '@pages/media/AttachmentModalScreen/types';
import type {GpsPoint} from '@userActions/IOU';
import {
Expand Down Expand Up @@ -174,9 +184,8 @@ function IOURequestStepConfirmation({

const [receiptFiles, setReceiptFiles] = useState<Record<string, Receipt>>({});
const requestType = getRequestType(transaction, isBetaEnabled(CONST.BETAS.MANUAL_DISTANCE));
const isDistanceRequest =
requestType === CONST.IOU.REQUEST_TYPE.DISTANCE || requestType === CONST.IOU.REQUEST_TYPE.DISTANCE_MAP || requestType === CONST.IOU.REQUEST_TYPE.DISTANCE_MANUAL;
const isManualDistanceRequest = requestType === CONST.IOU.REQUEST_TYPE.DISTANCE_MANUAL;
const isDistanceRequest = isDistanceRequestTransactionUtils(transaction);
const isManualDistanceRequest = isManualDistanceRequestTransactionUtils(transaction);
const isPerDiemRequest = requestType === CONST.IOU.REQUEST_TYPE.PER_DIEM;
const [lastLocationPermissionPrompt] = useOnyx(ONYXKEYS.NVP_LAST_LOCATION_PERMISSION_PROMPT, {canBeMissing: true});

Expand Down
36 changes: 26 additions & 10 deletions src/pages/iou/request/step/IOURequestStepDistanceManual.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,11 @@ import {
setMoneyRequestParticipantsFromReport,
setMoneyRequestPendingFields,
trackExpense,
updateMoneyRequestDistance,
} from '@libs/actions/IOU';
import {canUseTouchScreen} from '@libs/DeviceCapabilities';
import DistanceRequestUtils from '@libs/DistanceRequestUtils';
import {navigateToParticipantPage} from '@libs/IOUUtils';
import {navigateToParticipantPage, shouldUseTransactionDraft} from '@libs/IOUUtils';
import Navigation from '@libs/Navigation/Navigation';
import {roundToTwoDecimalPlaces} from '@libs/NumberUtils';
import {getParticipantsOption, getReportOption} from '@libs/OptionsListUtils';
Expand Down Expand Up @@ -80,9 +81,10 @@ function IOURequestStepDistanceManual({
const [reportAttributesDerived] = useOnyx(ONYXKEYS.DERIVED.REPORT_ATTRIBUTES, {canBeMissing: true, selector: (val) => val?.reports});

const isEditing = action === CONST.IOU.ACTION.EDIT;
const isSplitBill = iouType === CONST.IOU.TYPE.SPLIT;
const isCreatingNewRequest = !(backTo || isEditing);

const isTransactionDraft = shouldUseTransactionDraft(action, iouType);

const customUnitRateID = getRateID(transaction);
const unit = DistanceRequestUtils.getRate({transaction, policy}).unit;
const distance = transaction?.comment?.customUnit?.quantity ? roundToTwoDecimalPlaces(transaction.comment.customUnit.quantity) : undefined;
Expand All @@ -95,12 +97,12 @@ function IOURequestStepDistanceManual({
}, [distance]);

const shouldSkipConfirmation: boolean = useMemo(() => {
if (isSplitBill || !skipConfirmation || !report?.reportID) {
if (!skipConfirmation || !report?.reportID) {
return false;
}

return !(isArchivedReport(reportNameValuePairs) || isPolicyExpenseChatUtils(report));
}, [report, isSplitBill, skipConfirmation, reportNameValuePairs]);
}, [report, skipConfirmation, reportNameValuePairs]);

useFocusEffect(
useCallback(() => {
Expand All @@ -120,14 +122,11 @@ function IOURequestStepDistanceManual({

const buttonText = useMemo(() => {
if (shouldSkipConfirmation) {
if (iouType === CONST.IOU.TYPE.SPLIT) {
return translate('iou.split');
}
return translate('iou.createExpense');
}

return isCreatingNewRequest ? translate('common.next') : translate('common.save');
}, [shouldSkipConfirmation, translate, isCreatingNewRequest, iouType]);
}, [shouldSkipConfirmation, translate, isCreatingNewRequest]);

const navigateToConfirmationPage = useCallback(() => {
switch (iouType) {
Expand All @@ -142,7 +141,22 @@ function IOURequestStepDistanceManual({
const navigateToNextPage = useCallback(
(amount: string) => {
const distanceAsFloat = roundToTwoDecimalPlaces(parseFloat(amount));
setMoneyRequestDistance(transactionID, distanceAsFloat, isCreatingNewRequest);
setMoneyRequestDistance(transactionID, distanceAsFloat, isTransactionDraft);

if (action === CONST.IOU.ACTION.EDIT) {
if (distance !== distanceAsFloat) {
Comment on lines +146 to +147

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

NAB Combine to one if statement with an && expression.

updateMoneyRequestDistance({
transactionID: transaction?.transactionID,
transactionThreadReportID: reportID,
distance: distanceAsFloat,
// Not required for manual distance request
transactionBackup: undefined,
Comment thread
neil-marcellini marked this conversation as resolved.
policy,
});
}
Navigation.goBack(backTo);
return;
}

if (backTo) {
Navigation.goBack(backTo);
Expand Down Expand Up @@ -253,7 +267,7 @@ function IOURequestStepDistanceManual({
currentUserPersonalDetails.login,
currentUserPersonalDetails.accountID,
reportNameValuePairs,
isCreatingNewRequest,
isTransactionDraft,
activePolicy,
shouldSkipConfirmation,
personalDetails,
Expand All @@ -263,6 +277,8 @@ function IOURequestStepDistanceManual({
customUnitRateID,
translate,
navigateToConfirmationPage,
action,
distance,
],
);

Expand Down
Loading
Loading