-
Notifications
You must be signed in to change notification settings - Fork 2.9k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Create DeleteMoneyRequest command #17583
Changes from all commits
6077316
37985d3
7dc4e9a
cd46125
e69ab36
37abc13
b9a55af
79922e5
8a8477e
5650b4a
bf7b439
2025bcc
e475190
d3d9816
6ff57d3
18c7b29
1562b43
b62b3ac
c789367
0459471
852a080
30028e8
0145b3d
67c76f6
fe87207
7eb88dd
ab10ad5
14ef884
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
@@ -30,6 +30,18 @@ Onyx.connect({ | |||||||||||||||||||||||
}, | ||||||||||||||||||||||||
}); | ||||||||||||||||||||||||
|
||||||||||||||||||||||||
let transactions = {}; | ||||||||||||||||||||||||
Onyx.connect({ | ||||||||||||||||||||||||
key: ONYXKEYS.COLLECTION.TRANSACTION, | ||||||||||||||||||||||||
waitForCollectionCallback: true, | ||||||||||||||||||||||||
callback: (val) => { | ||||||||||||||||||||||||
if (!val) { | ||||||||||||||||||||||||
return; | ||||||||||||||||||||||||
} | ||||||||||||||||||||||||
transactions = val; | ||||||||||||||||||||||||
}, | ||||||||||||||||||||||||
}); | ||||||||||||||||||||||||
|
||||||||||||||||||||||||
let preferredLocale = CONST.LOCALES.DEFAULT; | ||||||||||||||||||||||||
Onyx.connect({ | ||||||||||||||||||||||||
key: ONYXKEYS.NVP_PREFERRED_LOCALE, | ||||||||||||||||||||||||
|
@@ -534,24 +546,22 @@ function splitBillAndOpenReport(participants, currentUserLogin, amount, comment, | |||||||||||||||||||||||
} | ||||||||||||||||||||||||
|
||||||||||||||||||||||||
/** | ||||||||||||||||||||||||
* Cancels or declines a transaction in iouReport. | ||||||||||||||||||||||||
* Declining and cancelling transactions are done via the same Auth command. | ||||||||||||||||||||||||
* | ||||||||||||||||||||||||
* @param {String} chatReportID | ||||||||||||||||||||||||
* @param {String} iouReportID | ||||||||||||||||||||||||
* @param {String} type - cancel|decline | ||||||||||||||||||||||||
* @param {Object} moneyRequestAction - the create IOU reportAction we are cancelling | ||||||||||||||||||||||||
* @param {Boolean} shouldCloseOnReject | ||||||||||||||||||||||||
* @param {Object} moneyRequestAction - the money request reportAction we are deleting | ||||||||||||||||||||||||
* @param {Boolean} shouldCloseOnDelete | ||||||||||||||||||||||||
*/ | ||||||||||||||||||||||||
function cancelMoneyRequest(chatReportID, iouReportID, type, moneyRequestAction, shouldCloseOnReject) { | ||||||||||||||||||||||||
const chatReport = chatReports[`${ONYXKEYS.COLLECTION.REPORT}${chatReportID}`]; | ||||||||||||||||||||||||
function deleteMoneyRequest(chatReportID, iouReportID, moneyRequestAction, shouldCloseOnDelete) { | ||||||||||||||||||||||||
const iouReport = iouReports[`${ONYXKEYS.COLLECTION.REPORT}${iouReportID}`]; | ||||||||||||||||||||||||
const transactionID = moneyRequestAction.originalMessage.IOUTransactionID; | ||||||||||||||||||||||||
|
||||||||||||||||||||||||
// Get the amount we are cancelling | ||||||||||||||||||||||||
// Make a copy of the chat report so we don't mutate the original one when updating its values | ||||||||||||||||||||||||
const chatReport = {...chatReports[`${ONYXKEYS.COLLECTION.REPORT}${chatReportID}`]}; | ||||||||||||||||||||||||
|
||||||||||||||||||||||||
// Get the amount we are deleting | ||||||||||||||||||||||||
const amount = moneyRequestAction.originalMessage.amount; | ||||||||||||||||||||||||
const optimisticReportAction = ReportUtils.buildOptimisticIOUReportAction( | ||||||||||||||||||||||||
type, | ||||||||||||||||||||||||
CONST.IOU.REPORT_ACTION_TYPE.DELETE, | ||||||||||||||||||||||||
amount, | ||||||||||||||||||||||||
moneyRequestAction.originalMessage.currency, | ||||||||||||||||||||||||
Str.htmlDecode(moneyRequestAction.originalMessage.comment), | ||||||||||||||||||||||||
|
@@ -562,8 +572,7 @@ function cancelMoneyRequest(chatReportID, iouReportID, type, moneyRequestAction, | |||||||||||||||||||||||
); | ||||||||||||||||||||||||
|
||||||||||||||||||||||||
const currentUserEmail = optimisticReportAction.actorEmail; | ||||||||||||||||||||||||
const updatedIOUReport = IOUUtils.updateIOUOwnerAndTotal(iouReport, currentUserEmail, amount, moneyRequestAction.originalMessage.currency, type); | ||||||||||||||||||||||||
|
||||||||||||||||||||||||
const updatedIOUReport = IOUUtils.updateIOUOwnerAndTotal(iouReport, currentUserEmail, amount, moneyRequestAction.originalMessage.currency, CONST.IOU.REPORT_ACTION_TYPE.DELETE); | ||||||||||||||||||||||||
chatReport.lastMessageText = optimisticReportAction.message[0].text; | ||||||||||||||||||||||||
chatReport.lastMessageHtml = optimisticReportAction.message[0].html; | ||||||||||||||||||||||||
chatReport.hasOutstandingIOU = updatedIOUReport.total !== 0; | ||||||||||||||||||||||||
|
@@ -589,6 +598,11 @@ function cancelMoneyRequest(chatReportID, iouReportID, type, moneyRequestAction, | |||||||||||||||||||||||
key: `${ONYXKEYS.COLLECTION.REPORT}${iouReportID}`, | ||||||||||||||||||||||||
value: updatedIOUReport, | ||||||||||||||||||||||||
}, | ||||||||||||||||||||||||
{ | ||||||||||||||||||||||||
onyxMethod: CONST.ONYX.METHOD.SET, | ||||||||||||||||||||||||
key: `${ONYXKEYS.COLLECTION.TRANSACTION}${transactionID}`, | ||||||||||||||||||||||||
value: null, | ||||||||||||||||||||||||
}, | ||||||||||||||||||||||||
]; | ||||||||||||||||||||||||
const successData = [ | ||||||||||||||||||||||||
{ | ||||||||||||||||||||||||
|
@@ -607,25 +621,41 @@ function cancelMoneyRequest(chatReportID, iouReportID, type, moneyRequestAction, | |||||||||||||||||||||||
key: `${ONYXKEYS.COLLECTION.REPORT_ACTIONS}${chatReportID}`, | ||||||||||||||||||||||||
value: { | ||||||||||||||||||||||||
[optimisticReportAction.reportActionID]: { | ||||||||||||||||||||||||
pendingAction: null, | ||||||||||||||||||||||||
luacmartins marked this conversation as resolved.
Show resolved
Hide resolved
|
||||||||||||||||||||||||
errors: { | ||||||||||||||||||||||||
[DateUtils.getMicroseconds()]: Localize.translateLocal('iou.error.genericCancelFailureMessage', {type}), | ||||||||||||||||||||||||
[DateUtils.getMicroseconds()]: Localize.translateLocal('iou.error.genericDeleteFailureMessage'), | ||||||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I think we forgot to put the error report preview action, which created the issue #33535 There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This is not a regression from this PR. We already added the report action in the optimistic data so we didn't need to add it in the failure data. Lines 580 to 590 in 14ef884
|
||||||||||||||||||||||||
}, | ||||||||||||||||||||||||
}, | ||||||||||||||||||||||||
}, | ||||||||||||||||||||||||
}, | ||||||||||||||||||||||||
{ | ||||||||||||||||||||||||
onyxMethod: CONST.ONYX.METHOD.MERGE, | ||||||||||||||||||||||||
key: `${ONYXKEYS.COLLECTION.REPORT}${chatReportID}`, | ||||||||||||||||||||||||
value: { | ||||||||||||||||||||||||
lastMessageText: chatReports[`${ONYXKEYS.COLLECTION.REPORT}${chatReportID}`].lastMessageText, | ||||||||||||||||||||||||
lastMessageHtml: chatReports[`${ONYXKEYS.COLLECTION.REPORT}${chatReportID}`].lastMessageHtml, | ||||||||||||||||||||||||
hasOutstandingIOU: iouReport.total !== 0, | ||||||||||||||||||||||||
}, | ||||||||||||||||||||||||
}, | ||||||||||||||||||||||||
{ | ||||||||||||||||||||||||
onyxMethod: CONST.ONYX.METHOD.MERGE, | ||||||||||||||||||||||||
key: `${ONYXKEYS.COLLECTION.REPORT}${iouReportID}`, | ||||||||||||||||||||||||
value: iouReport, | ||||||||||||||||||||||||
}, | ||||||||||||||||||||||||
{ | ||||||||||||||||||||||||
onyxMethod: CONST.ONYX.METHOD.SET, | ||||||||||||||||||||||||
key: `${ONYXKEYS.COLLECTION.TRANSACTION}${transactionID}`, | ||||||||||||||||||||||||
value: transactions[transactionID], | ||||||||||||||||||||||||
}, | ||||||||||||||||||||||||
]; | ||||||||||||||||||||||||
|
||||||||||||||||||||||||
API.write('CancelMoneyRequest', { | ||||||||||||||||||||||||
API.write('DeleteMoneyRequest', { | ||||||||||||||||||||||||
transactionID, | ||||||||||||||||||||||||
iouReportID: updatedIOUReport.reportID, | ||||||||||||||||||||||||
comment: '', | ||||||||||||||||||||||||
cancelMoneyRequestReportActionID: optimisticReportAction.reportActionID, | ||||||||||||||||||||||||
chatReportID, | ||||||||||||||||||||||||
debtorEmail: chatReport.participants[0], | ||||||||||||||||||||||||
reportActionID: optimisticReportAction.reportActionID, | ||||||||||||||||||||||||
iouReportID: updatedIOUReport.reportID, | ||||||||||||||||||||||||
}, {optimisticData, successData, failureData}); | ||||||||||||||||||||||||
|
||||||||||||||||||||||||
if (shouldCloseOnReject) { | ||||||||||||||||||||||||
if (shouldCloseOnDelete) { | ||||||||||||||||||||||||
Navigation.navigate(ROUTES.getReportRoute(chatReportID)); | ||||||||||||||||||||||||
} | ||||||||||||||||||||||||
} | ||||||||||||||||||||||||
|
@@ -1005,7 +1035,7 @@ function payMoneyRequestViaPaypal(chatReport, iouReport, recipient) { | |||||||||||||||||||||||
} | ||||||||||||||||||||||||
|
||||||||||||||||||||||||
export { | ||||||||||||||||||||||||
cancelMoneyRequest, | ||||||||||||||||||||||||
deleteMoneyRequest, | ||||||||||||||||||||||||
splitBill, | ||||||||||||||||||||||||
splitBillAndOpenReport, | ||||||||||||||||||||||||
requestMoney, | ||||||||||||||||||||||||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Wondering if the transaction detail view should be pending too, ie if you could still load the page and it would be disabled essentially.
Thats probably too complicated though
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You could probably load the page with the optimistic data. Not sure what you mean by disabled?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You ill have a transaction details page with $10 request for example and you will delete this transaction. Now the detailed page (
/r/:reportID/t/:transactionID
) can still be accessed as the thread, but how will we display it? the transaction data is null so we cannot show anything in the description or amount field.I assume we will only have to show the original thread