-
Notifications
You must be signed in to change notification settings - Fork 3.2k
[Due for payment 2025-04-23] [$250] mWeb - Reports - With multiple expenses long pressing 1st expense page moves & select option shown #59420
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
Comments
Triggered auto assignment to @lschurr ( |
Job added to Upwork: https://www.upwork.com/jobs/~021907125974219770626 |
Triggered auto assignment to Contributor-plus team member for initial proposal review - @ntdiary ( |
🚨 Edited by proposal-police: This proposal was edited at 2025-04-02 08:48:14 UTC. ProposalPlease re-state the problem that we are trying to solve in this issue.mWeb - Reports - With multiple expenses long pressing 1st expense page moves & select option shown What is the root cause of that problem?When long-pressing an item on the search page, the onFocus event is triggered, calling setFocusedIndex(). This causes onFocusedIndexChange to fire and invoke scrollToIndex, leading to an unintended scroll when the selection modal appears. App/src/components/Search/SearchList.tsx Lines 205 to 207 in c3451e1
We had logic in SelectionList to prevent this issue on mobile using isMobileChrome(), but in PR #57549, we migrated to FlatList and missed that logic, which led to the issue in the OP. App/src/components/SelectionList/index.tsx Lines 74 to 76 in c3451e1
What changes do you think we should make in order to solve the problem?We can bring back the missing logic to SearchList and only apply for web platform: App/src/components/Search/SearchList.tsx Line 118 in c3451e1
Then, in the onFocus event, we return early if shouldIgnoreFocus is true: App/src/components/Search/SearchList.tsx Lines 282 to 288 in c3451e1
onFocus={(event: NativeSyntheticEvent<ExtendedTargetedEvent>) => {
if (shouldIgnoreFocus) {
return;
}
... other
}} What specific scenarios should we cover in automated tests to prevent reintroducing this issue in the future?None – this is a UI bug specific to mobile Chrome. What alternative solutions did you explore? (Optional)We could simplify the solution like this (based on firesTouchEvents) onFocus={(event: NativeSyntheticEvent<ExtendedTargetedEvent>) => {
// Prevent unexpected scrolling on mobile Chrome after the context menu closes by ignoring programmatic focus not triggered by direct user interaction.
if (isMobileChrome() && event.nativeEvent) {
if( !event.nativeEvent.sourceCapabilities){
return
}
if(event.nativeEvent.sourceCapabilities.firesTouchEvents){
return
}
}
setFocusedIndex(index);
}} |
@linhvovan29546, your RCA LGTM, and I feel we could simplify the solution like this (based on ![]() |
This comment has been minimized.
This comment has been minimized.
@ntdiary Thank you for the suggestion! That works well. I've updated the proposal to include alternative solutions #59420 (comment) |
@linhvovan29546, are you saying the |
@ntdiary I've retested it, and it works well. Please ignore my first message 😊 |
That is a different issue because I can reproduce that on the web as well (though not consistently) without your code. Screen.Recording.2025-04-04.at.17.34.20.mp4 |
@linhvovan29546 's proposal LGTM, and I think it's fine to use a simple 🎀 👀 🎀 C+ reviewed |
Triggered auto assignment to @thienlnam, see https://stackoverflow.com/c/expensify/questions/7972 for more details. |
@thienlnam Whoops! This issue is 2 days overdue. Let's get this updated quick! |
Bump on this one @thienlnam |
@thienlnam Huh... This is 4 days overdue. Who can take care of this? |
📣 @linhvovan29546 🎉 An offer has been automatically sent to your Upwork account for the Contributor role 🎉 Thanks for contributing to the Expensify app! Offer link |
The PR is ready! |
FYI: The PR was deployed to production 4 days ago, and the due date for payment is 2025-04-23. |
Looks like the automation didn't work. Thanks @linhvovan29546 |
BugZero Checklist:
Bug classificationSource of bug:
Where bug was reported:
Who reported the bug:
Regression Test Proposal Template
Regression Test ProposalPrecondition:Test:Do we agree 👍 or 👎 |
Contributor: @linhvovan29546 paid $250 via Upwork @ntdiary can you propose the regression test steps plz |
@mallenexpensify, do you think it's better to create a new regression test? I noticed there's already a similar one earlier, It's actually the same, just described differently. 😂 |
I think we can close if we already have a regression test for this. |
$250 approved for @ntdiary |
Uh oh!
There was an error while loading. Please reload this page.
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: V9 1.21-1
Reproducible in staging?: Yes
Reproducible in production?: Yes
If this was caught on HybridApp, is this reproducible on New Expensify Standalone?: N/A
If this was caught during regression testing, add the test name, ID and link from TestRail: N/A
Email or phone of affected tester (no customers): Slottwo1 [email protected]
Issue reported by: Applause Internal Team
Device used: Redminote 10s android 13
App Component: User Settings
Action Performed:
Expected Result:
In reports page with multiple expenses, long pressing the 1st expense, deselect option must be displayed without moving up the page.
Actual Result:
In reports page with multiple expenses, long pressing the 1st expense, deselect select option is not shown. Page is moved up and long pressing on second time only select option is displayed.
Workaround:
Unknown
Platforms:
Screenshots/Videos
Bug6784750_1743110346795.Dvnb8264_1_.mp4
View all open jobs on GitHub
Upwork Automation - Do Not Edit
Issue Owner
Current Issue Owner: @lschurrThe text was updated successfully, but these errors were encountered: