Skip to content
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

[HOLD for payment 2023-09-27] [$500] IOS - Mention list open again after requesting money #26534

Closed
2 of 6 tasks
kbecciv opened this issue Sep 1, 2023 · 28 comments
Closed
2 of 6 tasks
Assignees
Labels
Awaiting Payment Auto-added when associated PR is deployed to production Bug Something is broken. Auto assigns a BugZero manager. Daily KSv2 External Added to denote the issue can be worked on by a contributor

Comments

@kbecciv
Copy link

kbecciv commented Sep 1, 2023

If you haven’t already, check out our contributing guidelines for onboarding and email contributors@expensify.com to request to join our Slack channel!


Action Performed:

  1. Go to any report, type @
  2. Go back to LHN, click Plus button and choose request money, request any amount to the above report.
  3. Repeat above steps few times.
  4. Notice that mention list is opened even composer is not focused.

Expected Result:

If composer is not focused, mention list shouldn't be opened.

Actual Result:

Mention list is opened even when composer is not focused.

Workaround:

Unknown

Platforms:

Which of our officially supported platforms is this issue occurring on?

  • Android / native
  • Android / Chrome
  • iOS / native
  • iOS / Safari
  • MacOS / Chrome / Safari
  • MacOS / Desktop

Version Number: 1.3.61.0
Reproducible in staging?: y
Reproducible in production?: y
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
Notes/Photos/Videos: Any additional supporting documentation

RPReplay_Final1693134852.MP4
RPReplay_Final1693603547.MP4

Expensify/Expensify Issue URL:
Issue reported by: @hungvu193
Slack conversation: https://expensify.slack.com/archives/C049HHMV9SM/p1693194595071649

View all open jobs on GitHub

Upwork Automation - Do Not Edit
  • Upwork Job URL: https://www.upwork.com/jobs/~014c468cc852a95d2d
  • Upwork Job ID: 1699131259631747072
  • Last Price Increase: 2023-09-05
  • Automatic offers:
    • cubuspl42 | Reviewer | 26637784
    • akinwale | Contributor | 26637787
    • hungvu193 | Reporter | 26637788
@kbecciv kbecciv added Daily KSv2 Bug Something is broken. Auto assigns a BugZero manager. labels Sep 1, 2023
@melvin-bot
Copy link

melvin-bot bot commented Sep 1, 2023

Triggered auto assignment to @tjferriss (Bug), see https://stackoverflow.com/c/expensify/questions/14418 for more details.

@melvin-bot
Copy link

melvin-bot bot commented Sep 1, 2023

Bug0 Triage Checklist (Main S/O)

  • This "bug" occurs on a supported platform (ensure Platforms in OP are ✅)
  • This bug is not a duplicate report (check E/App issues and #expensify-bugs)
    • If it is, comment with a link to the original report, close the issue and add any novel details to the original issue instead
  • This bug is reproducible using the reproduction steps in the OP. S/O
    • If the reproduction steps are clear and you're unable to reproduce the bug, check with the reporter and QA first, then close the issue.
    • If the reproduction steps aren't clear and you determine the correct steps, please update the OP.
  • This issue is filled out as thoroughly and clearly as possible
    • Pay special attention to the title, results, platforms where the bug occurs, and if the bug happens on staging/production.
  • I have reviewed and subscribed to the linked Slack conversation to ensure Slack/Github stay in sync

@akinwale
Copy link
Contributor

akinwale commented Sep 1, 2023

Proposal

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

The Mentions list opens again after requesting money even if the composer is not focused.

What is the root cause of that problem?

The onSelectionChange event handler in ComposerWithSuggestions triggers a recalculation of the suggestions by calling suggestionsRef.current.onSelectionChange(e). Based on the implementation of the onSelectionChange from the current suggestion ref, this recalculation ends up rendering the mentions list even when the text input is not focused.

calculateMentionSuggestion(e.nativeEvent.selection.end);

Additionally, The Suggestions component in ComposerWithSuggestions is not conditionally rendered based on whether or not the composer currently has focus.

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

Solution 1
In the onSelectionChange handler for the ComposerWithSuggestions component, perform an early return if the text input ref is not currently focused.

 const onSelectionChange = useCallback(
    (e) => {
+        if (!textInputRef.current.isFocused()) {
+            return;
+        }
        if (suggestionsRef.current.onSelectionChange(e)) {
            return;
        }

        setSelection(e.nativeEvent.selection);
    },
    [suggestionsRef],
);

Solution 2
Conditionally render the Suggestions component using ReportActionComposeFocusManager.isFocused(), or using a local state variable which tracks whether or not the composer is currently focused.

{ReportActionComposeFocusManager.isFocused() && <Suggestions
    ref={suggestionsRef}
    ...
/>

Also update the areas where suggestionsRef.current is being used to prevent crash errors due to trying to access a null / undefined ref.

What alternative solutions did you explore? (Optional)

None.

26534-demo.mp4

@melvin-bot melvin-bot bot added the Overdue label Sep 4, 2023
@melvin-bot
Copy link

melvin-bot bot commented Sep 5, 2023

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

@tjferriss tjferriss added the External Added to denote the issue can be worked on by a contributor label Sep 5, 2023
@melvin-bot melvin-bot bot changed the title IOS - Mention list open again after requesting money [$500] IOS - Mention list open again after requesting money Sep 5, 2023
@melvin-bot
Copy link

melvin-bot bot commented Sep 5, 2023

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

@melvin-bot melvin-bot bot added the Help Wanted Apply this label when an issue is open to proposals by contributors label Sep 5, 2023
@melvin-bot
Copy link

melvin-bot bot commented Sep 5, 2023

Current assignee @tjferriss is eligible for the External assigner, not assigning anyone new.

@tjferriss
Copy link
Contributor

I was able to reproduce the bug on staging.

@melvin-bot melvin-bot bot removed the Overdue label Sep 5, 2023
@melvin-bot
Copy link

melvin-bot bot commented Sep 5, 2023

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

@jeet-dhandha
Copy link
Contributor

Proposal

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

  • After leaving a @ in Composer of a chat and then if we request money from FAB to same chat then after requesting money when we redirect to that chat then Suggetions are shown in composer.

What is the root cause of that problem?

  • The root cause of this problem is that onSelectionChange is getting called in ComposerWithSuggestions component.

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

  • We can check if the composer is focued or not in onSelectionChange function of Suggestions.js. And early return if composer is not focued. For this we can use ReportActionComposeFocusManager.isFocused() function.

What alternative solutions did you explore? (Optional)

  • N/A

@cubuspl42
Copy link
Contributor

@jeet-dhandha Could you sum up the differences between your proposal and the earlier one?

I know it was edited, but I'm referring to the state 1 minute before your comment was submitted. It's quite possible that you weren't familiar with that edit when you started investigating.

@jeet-dhandha
Copy link
Contributor

I started investing and saw that onSelectionChange is getting called even when composer was not focused so the only solution came to my mind was to disable further execution of onSelectionChange from Sugesstions.js as suggestions have a bug here and not the composer.
I don’t know about proposal but the last time i saw it was to hide the whole Suggestion component. And getting the same solution at same time looks odd.

@cubuspl42
Copy link
Contributor

@jeet-dhandha It may be odd, but the timestaps suggest it happened. It looks that the proposal by @akinwale from 2023-09-05T19:45:10Z and your proposal from 2023-09-05T19:46:46Z are essentially the same.

@akinwale Did you write down the "Solution 1" after getting familiar with this comment, which would suggest a glitch in GitHub timestamps, or before?

@akinwale
Copy link
Contributor

akinwale commented Sep 6, 2023

@jeet-dhandha It may be odd, but the timestaps suggest it happened. It looks that the proposal by @akinwale from 2023-09-05T19:45:10Z and your proposal from 2023-09-05T19:46:46Z are essentially the same.

@akinwale Did you write down the "Solution 1" after getting familiar with this comment, which would suggest a glitch in GitHub timestamps, or before?

That's a weird coincidence. I decided to take another look at the issue to find a root cause after the Help Wanted label was applied as I was trying to cover all my bases, which led me to the onSelectionChange implementation.

My edit with the onSelectionChange solution looks to be about a minute and a half earlier than the other proposal, so there's no way I could've been able to see the other comment beforehand.

@jeet-dhandha
Copy link
Contributor

Its upto @cubuspl42 now 🙌

@melvin-bot melvin-bot bot added the Overdue label Sep 11, 2023
@melvin-bot
Copy link

melvin-bot bot commented Sep 12, 2023

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

@cubuspl42
Copy link
Contributor

I say we go with @akinwale ("Solution 1"). While @jeet-dhandha proposed essentially the same solution nearly at the same time, timestamps say that the edit by @akinwale happened slightly earlier.

C+ reviewed 🎀 👀 🎀

@melvin-bot
Copy link

melvin-bot bot commented Sep 12, 2023

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

@melvin-bot melvin-bot bot removed the Help Wanted Apply this label when an issue is open to proposals by contributors label Sep 12, 2023
@melvin-bot
Copy link

melvin-bot bot commented Sep 12, 2023

📣 @cubuspl42 🎉 An offer has been automatically sent to your Upwork account for the Reviewer role 🎉 Thanks for contributing to the Expensify app!

Offer link
Upwork job

@melvin-bot
Copy link

melvin-bot bot commented Sep 12, 2023

📣 @akinwale 🎉 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
Copy link

melvin-bot bot commented Sep 12, 2023

📣 @hungvu193 🎉 An offer has been automatically sent to your Upwork account for the Reporter role 🎉 Thanks for contributing to the Expensify app!

Offer link
Upwork job

@akinwale
Copy link
Contributor

@cubuspl42 My PR is ready for review. Thanks.

@melvin-bot
Copy link

melvin-bot bot commented Sep 18, 2023

Based on my calculations, the pull request did not get merged within 3 working days of assignment. Please, check out my computations here:

  • when @akinwale got assigned: 2023-09-12 18:48:07 Z
  • when the PR got merged: 2023-09-18 00:59:30 UTC
  • days elapsed: 3

On to the next one 🚀

@melvin-bot melvin-bot bot added Weekly KSv2 Awaiting Payment Auto-added when associated PR is deployed to production and removed Weekly KSv2 labels Sep 20, 2023
@melvin-bot melvin-bot bot changed the title [$500] IOS - Mention list open again after requesting money [HOLD for payment 2023-09-27] [$500] IOS - Mention list open again after requesting money Sep 20, 2023
@melvin-bot melvin-bot bot removed the Reviewing Has a PR in review label Sep 20, 2023
@melvin-bot
Copy link

melvin-bot bot commented Sep 20, 2023

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

@melvin-bot
Copy link

melvin-bot bot commented Sep 20, 2023

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

If no regressions arise, payment will be issued on 2023-09-27. 🎊

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.

  • External issue reporter
  • Contributor that fixed the issue
  • Contributor+ that helped on the issue and/or PR

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

As a reminder, here are the bonuses/penalties that should be applied for any External issue:

  • Merged PR within 3 business days of assignment - 50% bonus
  • Merged PR more than 9 business days after assignment - 50% penalty

@melvin-bot
Copy link

melvin-bot bot commented Sep 20, 2023

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:

  • [@cubuspl42] The PR that introduced the bug has been identified. Link to the PR:
  • [@cubuspl42] The offending PR has been commented on, pointing out the bug it caused and why, so the author and reviewers can learn from the mistake. Link to comment:
  • [@cubuspl42] A discussion in #expensify-bugs has been started about whether any other steps should be taken (e.g. updating the PR review checklist) in order to catch this type of bug sooner. Link to discussion:
  • [@cubuspl42] Determine if we should create a regression test for this bug.
  • [@cubuspl42] If we decide to create a regression test for the bug, please propose the regression test steps to ensure the same bug will not reach production again.
  • [@tjferriss] Link the GH issue for creating/updating the regression test once above steps have been agreed upon:

@cubuspl42 cubuspl42 mentioned this issue Sep 21, 2023
57 tasks
@cubuspl42
Copy link
Contributor

  • The PR that introduced the bug has been identified. Link to the PR:
  • The offending PR has been commented on, pointing out the bug it caused and why, so the author and reviewers can learn from the mistake. Link to comment:
  • A discussion in #expensify-bugs has been started about whether any other steps should be taken (e.g. updating the PR review checklist) in order to catch this type of bug sooner. Link to discussion:
    • No need for additional discussion
  • Determine if we should create a regression test for this bug.
    • No need for a new regression test
  • If we decide to create a regression test for the bug, please propose the regression test steps to ensure the same bug will not reach production again.
    • N/A

@tjferriss
Copy link
Contributor

Payment Summary:

Eligible for the 50% speed bonus

@melvin-bot melvin-bot bot added Daily KSv2 Overdue and removed Weekly KSv2 labels Sep 26, 2023
@tjferriss
Copy link
Contributor

Everyone has been paid out via Upworks. Closing!

@melvin-bot melvin-bot bot removed the Overdue label Sep 29, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Awaiting Payment Auto-added when associated PR is deployed to production Bug Something is broken. Auto assigns a BugZero manager. Daily KSv2 External Added to denote the issue can be worked on by a contributor
Projects
None yet
Development

No branches or pull requests

6 participants