Fix task assignee regex can't accept multi-level domains#49685
Fix task assignee regex can't accept multi-level domains#49685iwiznia merged 10 commits intoExpensify:mainfrom
Conversation
|
Can't send a message on Android mWeb. android.mweb.mp4 |
| * Group 3: Title is remaining characters | ||
| */ | ||
| const taskRegex = /^\[\]\s+(?:@([^\s@]+(?:@\w+\.\w+)?))?\s*([\s\S]*)/; | ||
| const emailWithOptionalDomainRegex = /(?=((?=[\w'#%+-]+(?:\.[\w'#%+-]+)*@?)[\w\.'#%+-]{1,64}(?:@(?:(?=[a-z\d]+(?:-+[a-z\d]+)*\.)(?:[a-z\d-]{1,63}\.)+[a-z]{2,63}))?(?= |_|\b))(?<end>.*))\S{3,254}(?=\k<end>$)/ |
There was a problem hiding this comment.
I decided to use the email regex from expensify-common. The only differences is the optional domain.
There was a problem hiding this comment.
Oh, I just removed the unnecessary character because the linter asked to.
|
I notice that if we create the task with a short mention, but our email is a public domain, the task will fail, for example: The current logic assumes that the current user is using a private domain email, but in this example, it's a public domain, so we send the API request without the domain as
|
Reviewer Checklist
Screenshots/VideosAndroid: Native01_Android_Native.mp4Android: mWeb Chrome02_Android_Chrome.mp4iOS: Native03_iOS_Native.mp4iOS: mWeb Safari04_iOS_Safari.mp4MacOS: Chrome / Safari05_MacOS_Chrome.mp4MacOS: Desktop06_MacOS_Desktop.mp4 |
Ollyws
left a comment
There was a problem hiding this comment.
LGTM.
In response to #49685 (comment), that seems like a seperate issue but I my choice would be option 2, treat it as a title as that seems conruent with what we already do for [] some@thing title
Agree |
|
Done. web.mp4I don't have a private domain email, so I edit the code so it behaves as my email as a private domain. web.mp4 |
| * Group 3: Title is remaining characters | ||
| */ | ||
| const taskRegex = /^\[\]\s+(?:@([^\s@]+(?:@\w+\.\w+)?))?\s*([\s\S]*)/; | ||
| const emailWithOptionalDomainRegex = |
There was a problem hiding this comment.
Can you add a comment here saying this is the same regex as the one in common but with domain removed please?
|
|
||
| const mention = match[1] ? match[1].trim() : undefined; | ||
| const mentionWithDomain = ReportUtils.addDomainToShortMention(mention ?? '') ?? mention; | ||
| const mentionWithDomain = ReportUtils.addDomainToShortMention(mention ?? '') ?? mention ?? ''; |
There was a problem hiding this comment.
Goes along with the suggestion in line 146
| const mentionWithDomain = ReportUtils.addDomainToShortMention(mention ?? '') ?? mention ?? ''; | |
| const mentionWithDomain = ReportUtils.addDomainToShortMention(mention) ?? mention; |
| return false; | ||
| } | ||
|
|
||
| const mention = match[1] ? match[1].trim() : undefined; |
There was a problem hiding this comment.
Better to set the default you want rather than the "wrong" default, only to add it later (in line 147).
| const mention = match[1] ? match[1].trim() : undefined; | |
| const mention = match[1] ? match[1].trim() : ''; |
|
@iwiznia addressed them all |
|
Prettier check failed |
|
@iwiznia done |
|
@iwiznia looks like this was merged without a test passing. Please add a note explaining why this was done and remove the |
|
Tests were passing when merged. |
|
✋ 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/iwiznia in version: 9.0.42-0 🚀
|
|
🚀 Deployed to production by https://github.com/jasperhuangg in version: 9.0.42-3 🚀
|
Details
When we create a task from the composer, it can't accept assignee email with multi-level domains (e.g., example@example.co.id).
Fixed Issues
$ #49454
PROPOSAL: #49454 (comment)
Tests
Same as QA Steps
Offline tests
Same as QA Steps
QA Steps
test, not.id testPR Author Checklist
### Fixed Issuessection aboveTestssectionOffline stepssectionQA stepssectiontoggleReportand notonIconClick)myBool && <MyComponent />.src/languages/*files and using the translation methodSTYLE.md) were followedAvatar, I verified the components usingAvatarare working as expected)StyleUtils.getBackgroundAndBorderStyle(theme.componentBG))Avataris modified, I verified thatAvataris working as expected in all cases)Designlabel and/or tagged@Expensify/designso the design team can review the changes.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.mp4
Android: mWeb Chrome
iOS: Native
ios.mp4
iOS: mWeb Safari
ios.mweb.mp4
MacOS: Chrome / Safari
web.mp4
MacOS: Desktop
desktop.mp4