Skip to content

Commit

Permalink
Remove empty waypoints before request
Browse files Browse the repository at this point in the history
  • Loading branch information
paultsimura committed Oct 19, 2023
1 parent 410a843 commit cd9cd57
Show file tree
Hide file tree
Showing 3 changed files with 38 additions and 15 deletions.
2 changes: 1 addition & 1 deletion src/libs/actions/IOU.js
Original file line number Diff line number Diff line change
Expand Up @@ -646,7 +646,7 @@ function createDistanceRequest(report, participant, comment, created, transactio
createdChatReportActionID,
createdIOUReportActionID,
reportPreviewReportActionID: reportPreviewAction.reportActionID,
waypoints: JSON.stringify(TransactionUtils.getValidWaypoints(transaction.comment.waypoints, true)),
waypoints: JSON.stringify(transaction.comment.waypoints),
created,
category,
tag,
Expand Down
22 changes: 21 additions & 1 deletion src/libs/actions/Transaction.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
import Onyx from 'react-native-onyx';
import lodashHas from 'lodash/has';
import lodashClone from 'lodash/clone';
import lodashGet from 'lodash/get';
import lodashReduce from 'lodash/reduce';
import {isEqual} from 'lodash';
import ONYXKEYS from '../../ONYXKEYS';
import * as CollectionUtils from '../CollectionUtils';
Expand Down Expand Up @@ -238,4 +240,22 @@ function updateWaypoints(transactionID: string, waypoints: WaypointCollection):
});
}

export {addStop, createInitialWaypoints, saveWaypoint, removeWaypoint, getRoute, updateWaypoints};
function cleanupWaypoints(transactionID: string): Promise<void> {
const transaction = allTransactions[transactionID];
const existingWaypoints = lodashGet(transaction, 'comment.waypoints', {});
const validWaypoints = TransactionUtils.getValidWaypoints(existingWaypoints, true);

const updatedWaypoints: WaypointCollection = lodashReduce(existingWaypoints, (result, value, key) => ({
...result,
// Explicitly set the non-existing waypoints to null so that Onyx can remove them
[key]: validWaypoints[key] ?? null,
}), {});

return Onyx.merge(`${ONYXKEYS.COLLECTION.TRANSACTION}${transactionID}`, {
comment: {
waypoints: updatedWaypoints,
},
});
}

export {addStop, createInitialWaypoints, saveWaypoint, removeWaypoint, getRoute, updateWaypoints, cleanupWaypoints};
29 changes: 16 additions & 13 deletions src/pages/iou/steps/MoneyRequestConfirmPage.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import styles from '../../../styles/styles';
import Navigation from '../../../libs/Navigation/Navigation';
import ROUTES from '../../../ROUTES';
import * as IOU from '../../../libs/actions/IOU';
import * as Transaction from '../../../libs/actions/Transaction';
import compose from '../../../libs/compose';
import * as ReportUtils from '../../../libs/ReportUtils';
import * as OptionsListUtils from '../../../libs/OptionsListUtils';
Expand Down Expand Up @@ -189,19 +190,21 @@ function MoneyRequestConfirmPage(props) {
*/
const createDistanceRequest = useCallback(
(selectedParticipants, trimmedComment) => {
IOU.createDistanceRequest(
props.report,
selectedParticipants[0],
trimmedComment,
props.iou.created,
props.iou.transactionID,
props.iou.category,
props.iou.tag,
props.iou.amount,
props.iou.currency,
props.iou.merchant,
props.iou.billable,
);
Transaction.cleanupWaypoints(props.iou.transactionID).then(() => {
IOU.createDistanceRequest(
props.report,
selectedParticipants[0],
trimmedComment,
props.iou.created,
props.iou.transactionID,
props.iou.category,
props.iou.tag,
props.iou.amount,
props.iou.currency,
props.iou.merchant,
props.iou.billable,
);
});
},
[props.report, props.iou.created, props.iou.transactionID, props.iou.category, props.iou.tag, props.iou.amount, props.iou.currency, props.iou.merchant, props.iou.billable],
);
Expand Down

0 comments on commit cd9cd57

Please sign in to comment.