Closed izarutskaya closed 10 months ago
Job added to Upwork: https://www.upwork.com/jobs/~01c2c24def63298e44
Triggered auto assignment to @stephanieelliott (Bug
), see https://stackoverflow.com/c/expensify/questions/14418 for more details.
Platforms
in OP are ✅)Triggered auto assignment to Contributor-plus team member for initial proposal review - @Santhosh-Sellavel (External
)
Not reproducible on production.
https://github.com/Expensify/App/assets/115492554/d9bbc3df-9db5-4768-8e0a-3655f3c7bd79
:wave: Friendly reminder that deploy blockers are time-sensitive ⏱ issues! Check out the open StagingDeployCash
deploy checklist to see the list of PRs included in this release, then work quickly to do one of the following:
Triggered auto assignment to @rlinoz (Engineering
), see https://stackoverflow.com/c/expensify/questions/4319 for more details.
regression from https://github.com/Expensify/App/pull/28866 maybe ?
Scan-App crashes tapping on scan request split bill amount&merchant
In a withOnyx we are using the result of the previous field to get the next field https://github.com/Expensify/App/blob/f0fb7a825a26967766e9f040e71a79d6006b027e/src/pages/EditSplitBillPage.js#L138-L155
in here we are using reportActions field while getting transaction so that reportActions field will be undefined
We should separate into 2 withOnyx function like that
export default compose(
withOnyx({
reportActions: {
key: ({route}) => `${ONYXKEYS.COLLECTION.REPORT_ACTIONS}${route.params.reportID}`,
canEvict: false,
}
}),
// eslint-disable-next-line rulesdir/no-multiple-onyx-in-file
withOnyx({
transaction: {
key: ({route, reportActions}) => {
const reportAction = reportActions[`${route.params.reportActionID.toString()}`];
return `${ONYXKEYS.COLLECTION.TRANSACTION}${lodashGet(reportAction, 'originalMessage.IOUTransactionID', 0)}`;
},
},
draftTransaction: {
key: ({route, reportActions}) => {
const reportAction = reportActions[`${route.params.reportActionID.toString()}`];
console.log("route.params.reportActionID", route.params.reportActionID)
console.log("reportAction", reportAction)
return `${ONYXKEYS.COLLECTION.SPLIT_TRANSACTION_DRAFT}${lodashGet(reportAction, 'originalMessage.IOUTransactionID', 0)}`;
},
},
})
)(EditSplitBillPage);
Scan-App crashes tapping on scan request split bill amount&merchant
withOnyx we are using the result of the previous field to get the next field and reportactions is undefined when used in transaction
key
we should use withReportAndReportActionOrNotFound
and use compose like we use in SplitBillDetailsPage
export default compose(
withReportAndReportActionOrNotFound,
withOnyx({
transaction: {
key: ({route, reportActions}) => {
const reportAction = reportActions[`${route.params.reportActionID.toString()}`];
return `${ONYXKEYS.COLLECTION.TRANSACTION}${lodashGet(reportAction, 'originalMessage.IOUTransactionID', 0)}`;
},
},
draftTransaction: {
key: ({route, reportActions}) => {
const reportAction = reportActions[`${route.params.reportActionID.toString()}`];
return `${ONYXKEYS.COLLECTION.SPLIT_TRANSACTION_DRAFT}${lodashGet(reportAction, 'originalMessage.IOUTransactionID', 0)}`;
},
},
}))(EditSplitBillPage);
The Expensify app crashes when tapping on the amount and merchant in a scan request split bill, caused by reportActions being undefined when used in the transaction key within EditSplitBillPage.js.
Implement a refactor in EditSplitBillPage.js using two separate withOnyx higher-order components. This approach will isolate the reportActions and transaction keys, ensuring that each is properly defined and accessed, thereby resolving the undefined issue leading to the crash.
Modify the EditSplitBillPage.js file to use two withOnyx components. Ensure each component separately handles reportActions and transaction keys. Conduct thorough testing to confirm that the issue is resolved and no new bugs are introduced.
Approach 1: Separating into Two withOnyx Functions
import { compose } from 'react-compose';
import { withOnyx } from 'react-native-onyx';
import ONYXKEYS from 'YOUR_PATH_TO_ONYX_KEYS';
export default compose(
withOnyx({
reportActions: {
key: ({route}) => `${ONYXKEYS.COLLECTION.REPORT_ACTIONS}${route.params.reportID}`,
canEvict: false,
}
}),
withOnyx({
transaction: {
key: ({route, reportActions}) => {
const reportAction = reportActions[`${route.params.reportActionID.toString()}`];
return `${ONYXKEYS.COLLECTION.TRANSACTION}${lodashGet(reportAction, 'originalMessage.IOUTransactionID', 0)}`;
},
},
draftTransaction: {
key: ({route, reportActions}) => {
const reportAction = reportActions[`${route.params.reportActionID.toString()}`];
return `${ONYXKEYS.COLLECTION.SPLIT_TRANSACTION_DRAFT}${lodashGet(reportAction, 'originalMessage.IOUTransactionID', 0)}`;
},
},
})
)(EditSplitBillPage);
Approach 2: Using withReportAndReportActionOrNotFound
import { compose } from 'react-compose';
import { withOnyx, withReportAndReportActionOrNotFound } from 'react-native-onyx';
import ONYXKEYS from 'YOUR_PATH_TO_ONYX_KEYS';
export default compose(
withReportAndReportActionOrNotFound,
withOnyx({
transaction: {
key: ({route, reportActions}) => {
const reportAction = reportActions[`${route.params.reportActionID.toString()}`];
return `${ONYXKEYS.COLLECTION.TRANSACTION}${lodashGet(reportAction, 'originalMessage.IOUTransactionID', 0)}`;
},
},
draftTransaction: {
key: ({route, reportActions}) => {
const reportAction = reportActions[`${route.params.reportActionID.toString()}`];
return `${ONYXKEYS.COLLECTION.SPLIT_TRANSACTION_DRAFT}${lodashGet(reportAction, 'originalMessage.IOUTransactionID', 0)}`;
},
},
})
)(EditSplitBillPage);
📣 @Gensu123! 📣 Hey, it seems we don’t have your contributor details yet! You'll only have to do this once, and this is how we'll hire you on Upwork. Please follow these steps:
Contributor details
Your Expensify account email: <REPLACE EMAIL HERE>
Upwork Profile Link: <REPLACE LINK HERE>
Removing the Help Wanted label because it seems that this was fixed reverting a PR here https://github.com/Expensify/App/pull/31231
Hey @izarutskaya can you retest this for us please?
Confirmed this issue is fixed: https://expensify.slack.com/archives/C9YU7BX5M/p1699981118689649?thread_ts=1699980359.470499&cid=C9YU7BX5M
No payments due, closing this out
Reviewing
label has been removed, please complete the "BugZero Checklist".
The solution for this issue has been :rocket: deployed to production :rocket: in version 1.3.98-5 and is now subject to a 7-day regression period :calendar:. Here is the list of pull requests that resolve this issue:
If no regressions arise, payment will be issued on 2023-11-21. :confetti_ball:
After the hold period is over and BZ checklist items are completed, please complete any of the applicable payments for this issue, and check them off once done.
For reference, here are some details about the assignees on this issue:
BugZero Checklist: The PR fixing this issue has been merged! The following checklist (instructions) will need to be completed before the issue can be closed:
The solution for this issue has been :rocket: deployed to production :rocket: in version 1.3.99-0 and is now subject to a 7-day regression period :calendar:. Here is the list of pull requests that resolve this issue:
If no regressions arise, payment will be issued on 2023-11-22. :confetti_ball:
After the hold period is over and BZ checklist items are completed, please complete any of the applicable payments for this issue, and check them off once done.
For reference, here are some details about the assignees on this issue:
BugZero Checklist: The PR fixing this issue has been merged! The following checklist (instructions) will need to be completed before the issue can be closed:
If you haven’t already, check out our contributing guidelines for onboarding and email contributors@expensify.com to request to join our Slack channel!
Version Number: 1.3.98-0 Reproducible in staging?: Y Reproducible in production?: N If this was caught during regression testing, add the test name, ID and link from TestRail: Email or phone of affected tester (no customers): Logs: https://stackoverflow.com/c/expensify/questions/4856 Expensify/Expensify Issue URL: Issue reported by: Applause-Internal Team Slack conversation: @
Action Performed:
Expected Result:
Tapping on amount and merchant in scan request split bill, app must not crash.
Actual Result:
Tapping on amount and merchant in scan request split bill, app crashes.
Workaround:
Unknown
Platforms:
Which of our officially supported platforms is this issue occurring on?
Screenshots/Videos
Add any screenshot/video evidence
https://github.com/Expensify/App/assets/115492554/4f528627-902f-4c98-bced-27ffc9df3221
https://github.com/Expensify/App/assets/115492554/6a3b5241-a8bc-4b07-ac81-b5ad02f3f7b7
amtcrasj.txt
View all open jobs on GitHub
Upwork Automation - Do Not Edit