App icon indicating copy to clipboard operation
App copied to clipboard

[$250] Split distance-Distance amount reverts to original amount when saving distance without editing

Open IuliiaHerets opened this issue 1 year ago β€’ 27 comments

If you haven’t already, check out our contributing guidelines for onboarding and email [email protected] to request to join our Slack channel!


Version Number: 9.0.59-0 Reproducible in staging?: Y Reproducible in production?: Y If this was caught on HybridApp, is this reproducible on New Expensify Standalone?: Y Email or phone of affected tester (no customers): [email protected] Issue reported by: Applause Internal Team

Action Performed:

  1. Go to staging.new.expensify.com
  2. Open DM.
  3. Split a distance expense with the user.
  4. Go to transaction thread.
  5. Note that distance is split in half.
  6. Click Distance field.
  7. Click Save without modifying anything.
  8. Note that Distance field reverts to the original distance, but the amount does not change.
  9. Click on the receipt.
  10. Go back to main chat.
  11. Note that the distance in the receipt and expense preview remains split in half and does not revert to the original amount.

Expected Result:

In Step 7, if saving distance without changing the waypoints is meant to revert the split distance to the original distance, it should also reflect the changes in expense amount, receipt and expense preview.

Actual Result:

In Step 8, after saving distance without changing the waypoints, Distance field reverts to the original distance, but the amount does not change. The receipt and expense preview still show the old amount and old distance.

Workaround:

Unknown

Platforms:

  • [x] Android: Standalone
  • [x] Android: HybridApp
  • [x] Android: mWeb Chrome
  • [x] iOS: Standalone
  • [x] iOS: HybridApp
  • [x] iOS: mWeb Safari
  • [ ] MacOS: Chrome / Safari
  • [ ] MacOS: Desktop

Screenshots/Videos

https://github.com/user-attachments/assets/c968b024-bcd0-472b-946a-3e593c78c373

View all open jobs on GitHub

Upwork Automation - Do Not Edit
  • Upwork Job URL: https://www.upwork.com/jobs/~021856609239459283873
  • Upwork Job ID: 1856609239459283873
  • Last Price Increase: 2024-11-13
  • Automatic offers:
    • FitseTLT | Contributor | 105164804
Issue OwnerCurrent Issue Owner: @FitseTLT

IuliiaHerets avatar Nov 08 '24 10:11 IuliiaHerets

Triggered auto assignment to @anmurali (Bug), see https://stackoverflow.com/c/expensify/questions/14418 for more details. Please add this bug to a GH project, as outlined in the SO.

melvin-bot[bot] avatar Nov 08 '24 10:11 melvin-bot[bot]

Edited by proposal-police: This proposal was edited at 2024-11-08 13:31:14 UTC.

Proposal

Please re-state the problem that we are trying to solve in this issue.

Split distance-Distance amount reverts to original amount when saving distance without editing

What is the root cause of that problem?

We are only submitting waypoints to the backend when the old address and the new one are different https://github.com/Expensify/App/blob/8a83e2baa1c7ce7ee2c31103574937c0484854be/src/pages/iou/request/step/IOURequestStepDistance.tsx#L457 but in this case it is the same and we should revert the transaction back to it's back up value https://github.com/Expensify/App/blob/8a83e2baa1c7ce7ee2c31103574937c0484854be/src/pages/iou/request/step/IOURequestStepDistance.tsx#L226-L230 but that only happens transactionWasSaved is false but we already set it to true here https://github.com/Expensify/App/blob/8a83e2baa1c7ce7ee2c31103574937c0484854be/src/pages/iou/request/step/IOURequestStepDistance.tsx#L448 so now in money request view we will see the routes.route0.distance that was populated via useFetchRoute when we opened the distance page https://github.com/Expensify/App/blob/8a83e2baa1c7ce7ee2c31103574937c0484854be/src/pages/iou/request/step/IOURequestStepDistance.tsx#L88-L93

What changes do you think we should make in order to solve the problem?

For editing case, we only don't want to restore the transaction if the old and new address are different. So we should set transactionWasSaved to true above here https://github.com/Expensify/App/blob/8a83e2baa1c7ce7ee2c31103574937c0484854be/src/pages/iou/request/step/IOURequestStepDistance.tsx#L461 change https://github.com/Expensify/App/blob/8a83e2baa1c7ce7ee2c31103574937c0484854be/src/pages/iou/request/step/IOURequestStepDistance.tsx#L447-L448

if (!isCreatingNewRequest && !isEditing) {
            transactionWasSaved.current = true;

so the transaction will be restored from the backup on clicking submit without changing the waypoints

Side Note: Though not directly linked to this issue I have observed that the distance we are setting optimstically is just the total distance and it only gets it's correct split value from the BE so we can fix that by setting the split distance in customUnit of the transaction same as we are already doing for the splitShare.amount https://github.com/Expensify/App/blob/8a83e2baa1c7ce7ee2c31103574937c0484854be/src/libs/actions/IOU.ts#L4228

What alternative solutions did you explore? (Optional)

We can also clear routes of the transaction here https://github.com/Expensify/App/blob/8a83e2baa1c7ce7ee2c31103574937c0484854be/src/pages/iou/request/step/IOURequestStepDistance.tsx#L227

FitseTLT avatar Nov 08 '24 14:11 FitseTLT

@anmurali Uh oh! This issue is overdue by 2 days. Don't forget to update your issues!

melvin-bot[bot] avatar Nov 11 '24 15:11 melvin-bot[bot]

Triggered auto assignment to @Christinadobrzyn (Bug), see https://stackoverflow.com/c/expensify/questions/14418 for more details. Please add this bug to a GH project, as outlined in the SO.

melvin-bot[bot] avatar Nov 12 '24 03:11 melvin-bot[bot]

Job added to Upwork: https://www.upwork.com/jobs/~021856609239459283873

melvin-bot[bot] avatar Nov 13 '24 08:11 melvin-bot[bot]

Triggered auto assignment to Contributor-plus team member for initial proposal review - @allroundexperts (External)

melvin-bot[bot] avatar Nov 13 '24 08:11 melvin-bot[bot]

Proposal

Please re-state the problem that we are trying to solve in this issue.

In Step 8, after saving distance without changing the waypoints, Distance field reverts to the original distance, but the amount does not change. The receipt and expense preview still show the old amount and old distance.

What is the root cause of that problem?

When we create a split distance, the sub-transaction has quantity split from the total quantity

If we open the distance edit page, the quantity is updated to the current distance of waypoints. Then when we click on the save button without modifying anything, we do nothing here, but we still update transactionWasSaved.current to true.

Then the transaction is not reverted to the previous

https://github.com/Expensify/App/blob/c24d217f511e35d85b2b7828966e0a7ca5c0190e/src/pages/iou/request/step/IOURequestStepDistance.tsx#L448-L450

What changes do you think we should make in order to solve the problem?

When we edit the waypoint we should only update transactionWasSaved.current to true if we call updateMoneyRequestDistance. We can move these lines to here

And add transactionWasSaved.current = true here

We shouldn't update like the first proposal because it causes the transaction to be reverted here after we change the waypoint

https://github.com/Expensify/App/blob/c24d217f511e35d85b2b7828966e0a7ca5c0190e/src/pages/iou/request/step/IOURequestStepDistance.tsx#L230

What alternative solutions did you explore? (Optional)

NA

nkdengineer avatar Nov 13 '24 09:11 nkdengineer

hey @allroundexperts this one is kinda weird (at least I think so) let me know if you need any questions answered from the team about expectations here. I think it's pretty clear but I had a hard time narrowing down the issue.

Christinadobrzyn avatar Nov 14 '24 04:11 Christinadobrzyn

@allroundexperts, @Christinadobrzyn Huh... This is 4 days overdue. Who can take care of this?

melvin-bot[bot] avatar Nov 18 '24 09:11 melvin-bot[bot]

~~Thanks for the proposals everyone.~~

~~I think @nkdengineer is correct in pointing out that the transaction will be reverted after we change the waypoint. @nkdengineer's proposal looks better.~~ ~~Let's go with them.~~

~~πŸŽ€ πŸ‘€ πŸŽ€ C+ reviewed~~

allroundexperts avatar Nov 18 '24 23:11 allroundexperts

Triggered auto assignment to @blimpich, see https://stackoverflow.com/c/expensify/questions/7972 for more details.

melvin-bot[bot] avatar Nov 18 '24 23:11 melvin-bot[bot]

@allroundexperts @nkdengineer 's proposal is exactly as mine. I think both of you misunderstood my proposal. This part of his suggestion

When we edit the waypoint we should only update transactionWasSaved.current to true if we call updateMoneyRequestDistance. We can move these lines to here

is the same as what I said to exclude the case for isEditing

if (!isCreatingNewRequest && !isEditing) {
            transactionWasSaved.current = true;

And this part of his solution

And add transactionWasSaved.current = true here

I have already stated: For editing case, we only don't want to restore the transaction if the old and new address are different. So we should set transactionWasSaved to true above here

App/src/pages/iou/request/step/IOURequestStepDistance.tsx

Line 461 in 8a83e2b

IOU.updateMoneyRequestDistance({

@nkdengineer has mislead you with his comments @allroundexperts Please re-take a look at my proposal πŸ‘

cc @blimpich

FitseTLT avatar Nov 19 '24 00:11 FitseTLT

Just another note: I'm the first one to explain why this only happens for distance requests for split distances.

nkdengineer avatar Nov 20 '24 07:11 nkdengineer

Just another note: I'm the first one to explain why this only happens for distance requests for split distances.

The root cause of the issue has no relation with whether it is a split distance request or not. The result of the problem only gets visible for split distance request because we populate the distance with the splitted amount for split request and the fact that we are not reverting the transaction will be visible in this case because the distance will be set to the unsplitted/full amount. And the problem should be solved for all cases and that's why it is not important and I didn't mention. @allroundexperts bump on https://github.com/Expensify/App/issues/52241#issuecomment-2484426386 You have selected the second proposal which is exactly the same as mine which is the first one please re-consider your review and let's proceed into creating the PR. Thx

FitseTLT avatar Nov 20 '24 12:11 FitseTLT

Just another note: I'm the first one to explain why this only happens for distance requests for split distances.

The root cause of the issue has no relation with whether it is a split distance request or not. The result of the problem only gets visible for split distance request because we populate the distance with the splitted amount for split request and the fact that we are not reverting the transaction will be visible in this case because the distance will be set to the unsplitted/full amount. And the problem should be solved for all cases and that's why it is not important and I didn't mention. @allroundexperts bump on #52241 (comment) You have selected the second proposal which is exactly the same as mine which is the first one please re-consider your review and let's proceed into creating the PR. Thx

@FitseTLT Please give me some time to re-review it. I'll get back on this today.

allroundexperts avatar Nov 20 '24 12:11 allroundexperts

@blimpich @allroundexperts @Christinadobrzyn this issue was created 2 weeks ago. Are we close to approving a proposal? If not, what's blocking us from getting this issue assigned? Don't hesitate to create a thread in #expensify-open-source to align faster in real time. Thanks!

melvin-bot[bot] avatar Nov 22 '24 09:11 melvin-bot[bot]

I reviewed this again. Specifically, I tried to test if the transaction would be reverted after we change the waypoint. Although it seemed like that would be the case initially, but upon inserting the proposal code in the app, I wasn't able to verify that.

@nkdengineer can you elaborate the following more?

We shouldn't update like the first proposal because it causes the transaction to be reverted here after we change the waypoint

allroundexperts avatar Nov 24 '24 23:11 allroundexperts

We shouldn't update like the first proposal because it causes the transaction to be reverted here after we change the waypoint

@allroundexperts this is my mistake, I missed the first step when reading the proposal.

The root cause of the issue has no relation with whether it is a split distance request or not

In general theory, if we do not change the address, nothing will happen even if we don't restore the transaction from the backup. So if we don't explain what happened to the split distance, it won't be clear why this bug happens.

nkdengineer avatar Nov 26 '24 09:11 nkdengineer

@blimpich, @allroundexperts, @Christinadobrzyn Whoops! This issue is 2 days overdue. Let's get this updated quick!

melvin-bot[bot] avatar Nov 28 '24 09:11 melvin-bot[bot]

@allroundexperts Please let's proceed with this. Thx

FitseTLT avatar Nov 28 '24 11:11 FitseTLT

@blimpich, @allroundexperts, @Christinadobrzyn 6 days overdue. This is scarier than being forced to listen to Vogon poetry!

melvin-bot[bot] avatar Dec 02 '24 09:12 melvin-bot[bot]

Hi @allroundexperts can you provide an update on this? I'm catching up after some ooo and not sure where we are. TY!

Christinadobrzyn avatar Dec 02 '24 17:12 Christinadobrzyn

@nkdengineer Thanks for being honest here. Given that the transaction is not reverted, I'd agree with @FitseTLT that @nkdengineer's proposal is almost the same as @FitseTLT. As such, Let's go with @FitseTLT.

πŸŽ€ πŸ‘€ πŸŽ€ C+ reviewed

allroundexperts avatar Dec 02 '24 21:12 allroundexperts

Current assignee @blimpich is eligible for the choreEngineerContributorManagement assigner, not assigning anyone new.

melvin-bot[bot] avatar Dec 02 '24 21:12 melvin-bot[bot]

πŸ“£ @FitseTLT πŸŽ‰ An offer has been automatically sent to your Upwork account for the Contributor role πŸŽ‰ Thanks for contributing to the Expensify app!

Offer link Upwork job Please accept the offer and leave a comment on the Github issue letting us know when we can expect a PR to be ready for review πŸ§‘β€πŸ’» Keep in mind: Code of Conduct | Contributing πŸ“–

melvin-bot[bot] avatar Dec 02 '24 21:12 melvin-bot[bot]

@FitseTLT just checking on the PR. Thanks!

Christinadobrzyn avatar Dec 03 '24 23:12 Christinadobrzyn

monitoring PR https://github.com/Expensify/App/pull/53628

Christinadobrzyn avatar Dec 09 '24 23:12 Christinadobrzyn

Reviewing label has been removed, please complete the "BugZero Checklist".

melvin-bot[bot] avatar Dec 12 '24 01:12 melvin-bot[bot]

The solution for this issue has been :rocket: deployed to production :rocket: in version 9.0.74-8 and is now subject to a 7-day regression period :calendar:. Here is the list of pull requests that resolve this issue:

  • https://github.com/Expensify/App/pull/53628

If no regressions arise, payment will be issued on 2024-12-19. :confetti_ball:

For reference, here are some details about the assignees on this issue:

  • @allroundexperts requires payment through NewDot Manual Requests
  • @FitseTLT requires payment automatic offer (Contributor)

melvin-bot[bot] avatar Dec 12 '24 01:12 melvin-bot[bot]

@allroundexperts @Christinadobrzyn @allroundexperts The PR fixing this issue has been merged! The following checklist (instructions) will need to be completed before the issue can be closed. Please copy/paste the BugZero Checklist from here into a new comment on this GH and complete it. If you have the K2 extension, you can simply click: [this button]

melvin-bot[bot] avatar Dec 12 '24 01:12 melvin-bot[bot]