[CP Staging] Fix Concierge prompt box bugs on the HomePage - #100935
Conversation
|
@codex please review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 888cb3a504
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
Codecov Report❌ Looks like you've decreased code coverage for some files. Please write tests to increase, or at least maintain, the existing level of code coverage. See our documentation here for how to interpret this table.
|
|
@ZhenjaHorbach Please copy/paste the Reviewer Checklist from here into a new comment on this PR and complete it. If you have the K2 extension, you can simply click: [this button] |
| }; | ||
|
|
||
| function shouldAcceptDrop(event: DragEvent): boolean { | ||
| return !!event.dataTransfer?.types.some((type) => type === 'Files'); |
There was a problem hiding this comment.
Can we create a utility for this logic?
Since we use this logic in a few places
There was a problem hiding this comment.
Will take a look at it, I just copy pasted from old ReceiptScanDropZone, but if it is used in a few places then it's a good idea
| isMobileSelectionModeEnabled={false} | ||
| /> | ||
| </View> | ||
| <View style={[styles.flex1]}> |
There was a problem hiding this comment.
<View style={styles.flex1}>
| /> | ||
| </> | ||
| )} | ||
| <View style={[styles.flex1]}> |
There was a problem hiding this comment.
<View style={styles.flex1}>
Reviewer Checklist
Screenshots/VideosAndroid: HybridApp2026-09-11.12.58.34.movAndroid: mWeb Chrome2026-09-11.12.58.34.moviOS: HybridApp2026-09-11.12.56.13.moviOS: mWeb Safari2026-09-11.12.51.28.movMacOS: Chrome / Safari2026-09-11.12.35.56.mov |
|
🚧 puneetlath has triggered a test Expensify/App build. You can view the workflow run here. |
…erge-prompt-box-blockers-home-ap Fix Concierge prompt box bugs on the HomePage (cherry picked from commit 3f0161f) (cherry-picked to staging by mountiny)
|
✋ This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release. |
|
🧪🧪 Use the links below to test this adhoc build on Android, iOS, and Web. Happy testing! 🧪🧪
|
|
🚀 Cherry-picked to staging by https://github.com/mountiny in version: 9.4.76-1 🚀
|
|
🤖 No help site changes required — no draft PR created. This PR is a pure bug fix. It restores the behavior the help site already describes, so nothing under WhyWhat changed: Fixed issues:
No documentable surface changed:
The docs already match the fixed behavior:
Neither statement becomes wrong or incomplete because of this PR. The help site doesn't document suggestion-list dismissal behavior or menu positioning, and it shouldn't — that's incidental UI behavior, not something a user needs instructions for.
|
|
🚀 Deployed to production by https://github.com/mountiny in version: 9.4.76-1 🚀
Bundle Size Analysis (Sentry): |
|
🚀 Cherry-picked to staging by https://github.com/mountiny in version: 9.4.77-0 🚀
|
|
🤖 Re-checked — still no help site changes required, no draft PR created. Same conclusion as my earlier review. The PR is merged and deployed, and the diff hasn't changed since. One thing I verified more closely this time, since - {!!queryJSON && <ReceiptScanDropZone targetRef={receiptDropTargetRef} />}
+ <ReceiptScanDropZoneSo no page gained receipt drag-and-drop here. It's a component API refactor, and the big Everything else holds: no new or reworded copy ( The help site already describes this behavior correctly and stays accurate:
|
Explanation of Change
ReceiptScanDropZonenow wraps page content and publishes its drag state viaDragAndDropStateContext, so the composer'sSuggestionslist closes when a file is dragged over the page. Drag logic and overlay moved into a newReceiptScanDropTarget, unmounted while disabled.HomePage,SearchPageWideandSearchPageNarrowupdated to the wrapper API.isEnoughSpaceToRenderMenuAboveCursornow also takes into consideration suggestion list chrome height (borders, paddings) and correct gap between the caret and the list in the native appFixed Issues
$ #100915
$ #100934
PROPOSAL: N/A
Tests
T1:
Open the web app on Home page.
Focus the Concierge prompt box (composer) and type
:smiso the emoji suggestion list opens.Drag an image file from your file system over the Home page (do not drop yet).
Verify that the emoji suggestion list closes as soon as the file is dragged over the page, and the "Scan receipts" drop overlay appears.
Drag the file outside of the window to cancel the drag.
Verify that the drop overlay disappears and the page returns to its normal state.
Repeat steps 2-3, then drop the file on the page.
Verify that the receipt scan flow starts with the dropped file.
Repeat steps 1-8 with a mention suggestion (type
@+ a few letters) and verify the mention suggestion list also closes while dragging.Go to Spend on a wide layout.
Drag an image file over the page and verify the "Scan receipts" drop overlay appears; drop it and verify the receipt scan flow starts.
Resize the window to a narrow layout and open Spend again.
Verify the page renders correctly (header, search input, filters bar, list, bottom tab bar) and that scrolling/collapsing the header still works.
Drag an image file over the page and verify the drop overlay appears above the bottom tab bar, then drop it and verify the receipt scan flow starts.
T2:
@or:smi)Offline tests
N/A
QA Steps
Same as tests
PR Author Checklist
### Fixed Issuessection aboveTestssectionOffline stepssectionQA stepssectionAvatar, I verified the components usingAvatarare working as expected)StyleUtils.getBackgroundAndBorderStyle(theme.componentBG))npm run compress-svg)Avataris modified, I verified thatAvataris working as expected in all cases)Designlabel and/or tagged@Expensify/designso the design team can review the changes.mainbranch was merged into this PR after a review, I tested again and verified the outcome was still expected according to theTeststeps.Screenshots/Videos
Android: Native
Screen.Recording.2026-09-11.at.12.16.32.mov
Android: mWeb Chrome
iOS: Native
Screen.Recording.2026-09-11.at.12.14.52.mov
iOS: mWeb Safari
MacOS: Chrome / Safari
Screen.Recording.2026-09-11.at.09.53.38.mov
Screen.Recording.2026-09-11.at.10.04.47.mov