Fix attendees selection to allow names instead of email or phone only && bug fixes#79111
Fix attendees selection to allow names instead of email or phone only && bug fixes#79111MarioExpensify merged 11 commits intomainfrom
Conversation
Codecov Report✅ Changes either increased or maintained existing code coverage, great job!
|
|
@jjcoffee assigning @eVoloshchak since he reviewed the original PR #77995 |
Reviewer Checklist
Screenshots/VideosAndroid: HybridAppScreen.Recording.2026-01-09.at.16.30.20.movAndroid: mWeb ChromeScreen.Recording.2026-01-09.at.16.33.11.moviOS: HybridAppScreen.Recording.2026-01-09.at.16.23.38.moviOS: mWeb SafariScreen.Recording.2026-01-09.at.16.26.53.movMacOS: Chrome / SafariScreen.Recording.2026-01-09.at.16.19.14.mov |
|
@dubielzyk-expensify @dannymcclain - can be considered polish if this PR is good to go otherwise, but I think it would be nice to use default avatars instead of grey fallbacks here for these external attendees. I also wonder about the duplicate supporting text for the primaryLogin, and whether we should just hide that:
|
trjExpensify
left a comment
There was a problem hiding this comment.
No qualms from product, this feature should have existed with the original imp of attendee tracking! 👍
Yeah, I think that could be nice but I agree it can be follow-up polish. The only weird thing is that by giving them an avatar, it looks like they actually have an account, which they don't... So maybe it would actually be better to leave them as a placeholder?
Yeah, for these, since they're not really accounts, I can see the argument for just hiding the supporting text. Could definitely be a follow up. Otherwise this is looking good to me. cc @dubielzyk-expensify |
eVoloshchak
left a comment
There was a problem hiding this comment.
LGTM!
When performing Test 2 I noticed that recents aren't sorted in chronological order, which means after you have a few (4+), the most recent ones are not at the top and not visible
This isn't related to this PR and is the current behavior on staging, but I wonder if this is expected
|
@MarioExpensify 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] |
Exactly. I've had this gripe before and I believe we had this before we changed it. I pretty strongly think we should show the grey avatar if a user doesn't have an account yet since we assign the default avatars when they create an account.
I lean on keeping it just because that's consistent with how we show email addresses twice on accounts without names. No massive feels though. |
|
@MarioExpensify could you please review the PR when you can? Thanks! |
MarioExpensify
left a comment
There was a problem hiding this comment.
LGTM!! Moving forward!
|
✋ This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release. |
|
🚀 Deployed to staging by https://github.com/MarioExpensify in version: 9.3.0-0 🚀
|
|
🚀 Deployed to production by https://github.com/francoisl in version: 9.3.0-8 🚀
|

Explanation of Change
Undoes the revert of #77995
And fixes these issues:
Allowing plain-text attendee names (
shouldAcceptName=true) exposed a bug where the optimistic “user to invite” option used an empty login for non email/phone inputs; this broke selection/dedup and display logic.This PR fixes it by using the typed
searchValueas the option login (the only stable identifier for name-only attendees), centralizing basic </> validation, and falling back to displayName when an attendee has no email.Fixed Issues
$ #77993
PROPOSAL:
Tests
Preconditon:
Test 1: standard flow
test1.mov
Test 2: recents section shows attendee added on confirm page and also in expense thread
Expected Result:
Recents section will show attendees added on confirm page (Step 6) and attendee added in transaction thread (Step 10).
test2.mov
Test 3: Attendee is unselected when clicking on the selected attendee
Expected Result:
The attendee will be unselected.
test3.mov
Test 4: Irrelevant result does not appear when typing name in Attendee field
Expected Result:
Irrelevant result will be filtered out when typing name in Attendee field.
test4.mov
Test 5: Verify attendees names with special characters (< >) are not selectable
Expected Result:
You should not be able to select it
test5.mov
Offline tests
NA
QA Steps
// TODO: These must be filled out, or the issue title must include "[No QA]."
Same as in tests
PR Author Checklist
### Fixed Issuessection aboveTestssectionOffline stepssectionQA stepssectiontoggleReportand notonIconClick)myBool && <MyComponent />.src/languages/*files and using the translation methodWaiting for Copylabel for a copy review on the original GH to get the correct copy.STYLE.md) were followedAvatar, I verified the components usingAvatarare working as expected)/** comment above it */thisare necessary to be bound (i.e. avoidthis.submit = this.submit.bind(this);ifthis.submitis never passed to a component event handler likeonClick)StyleUtils.getBackgroundAndBorderStyle(themeColors.componentBG))Avataris modified, I verified thatAvataris working as expected in all cases)ScrollViewcomponent to make it scrollable when more elements are added to the page.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
Android: mWeb Chrome
iOS: Native
iOS: mWeb Safari
MacOS: Chrome / Safari