[CP Staging] added component#30081
Conversation
Signed-off-by: Ayaz Alavi <ayaz.alavi@gmail.com>
|
@narefyev91 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] |
| return ( | ||
| <Text style={[containsOnlyEmojis ? styles.onlyEmojisText : undefined, styles.ltr, ...props.style]}> | ||
| {checkForEmojiForSelection(text, props.displayAsGroup)} | ||
| <ZeroWidthComponent |
| const checkForEmojiForSelection = ({text, displayAsGroup}) => { | ||
| const firstLetterIsEmoji = EmojiUtils.isFirstLetterEmoji(text); | ||
| if (firstLetterIsEmoji && !displayAsGroup && !Browser.isMobile()) { | ||
| return <Text>​</Text>; |
There was a problem hiding this comment.
i do not see import for Text tag
| * @returns {ReactNode | null} Text component with zero width character | ||
| */ | ||
|
|
||
| const checkForEmojiForSelection = ({text, displayAsGroup}) => { |
There was a problem hiding this comment.
if you exporting this as a React component name should be ZeroWidthComponent - with default props, default displayName and default propTypes defined
There was a problem hiding this comment.
Sorry forgot to add those earlier. Please check now.
Signed-off-by: Ayaz Alavi <ayaz.alavi@gmail.com>
Signed-off-by: Ayaz Alavi <ayaz.alavi@gmail.com>
Signed-off-by: Ayaz Alavi <ayaz.alavi@gmail.com>
Reviewer Checklist
Screenshots/VideosWebweb1.movMobile Web - Chromeandroid-web1.movMobile Web - Safariios-web1.movDesktopdesktop1.moviOSios1.movAndroidandroid1.mov |
| @@ -0,0 +1,5 @@ | |||
| function ZeroWidthView() { | |||
There was a problem hiding this comment.
last note - please add comments why we return null for native - just to not forget the reason @ayazalavi
narefyev91
left a comment
There was a problem hiding this comment.
LGTM! Needs to add notes for native.js file - overall issue is resolved
🎀 👀 🎀 C+ reviewed
mountiny
left a comment
There was a problem hiding this comment.
@ayazalavi Please address this in some of your next PRs https://github.com/Expensify/App/pull/30081/files#r1367034384
|
✋ This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release. |
…n_bug [CP Staging] added component (cherry picked from commit 115974e)
|
🚀 Cherry-picked to staging by https://github.com/mountiny in version: 1.3.87-9 🚀
@Expensify/applauseleads please QA this PR and check it off on the deploy checklist if it passes. |
|
🚀 Deployed to production by https://github.com/francoisl in version: 1.3.87-12 🚀
|

Details
When selecting an emoji in a chat, the AM/PM from the previous line is also selected. This bug occurs because the browser calculates emojis as multi-byte characters. When an emoji appears as the first character in a chat, the browser has no reference point to determine the starting byte of the emoji. As a result, the browser selects the previous word as the starting point for the emoji bytes.
Fixed Issues
$ #29021
$ #30064
PROPOSAL: #29021 (comment)
Tests
Offline tests
same as above
QA Steps
same as above
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 */thisproperly so there are no scoping issues (i.e. foronClick={this.submit}the methodthis.submitshould be bound tothisin the constructor)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
f7040aac-f06a-4b3b-aeb2-9367d6b7a9de.mp4
Android: mWeb Chrome
f7040aac-f06a-4b3b-aeb2-9367d6b7a9de.mp4
iOS: Native
e255a560-f5ec-4a59-a262-17c25cf2060e.mp4
iOS: mWeb Safari
e255a560-f5ec-4a59-a262-17c25cf2060e.mp4
MacOS: Chrome / Safari
523f20f8-e1b0-4027-b731-96d215883016.mp4
MacOS: Desktop
af74c7ed-b2d9-4903-a629-09301062b43d.mp4