Improved selection placement when emoji is typed#22827
Conversation
|
@aimane-chnaif 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] |
|
Looks like there is a problem with selection in native devices, controlled selection is not working in android and ios apps, that's why we cannot control cursor correctly. I found this issue which talks about selection not working in android - #12854 |
|
Android controlled selection is very buggy at the moment. I can confirm that this also happens on main android.mov |
|
@alitoshmatov have you found any known E/App GH that iOS controlled selection is not working? |
|
@aimane-chnaif No I couldn't find similar issue for ios |
|
I also tested all other solutions on iOS and none of them working. |
Reviewer Checklist
Screenshots/VideosWebhello-smhilea-.movtest-smhahaile-.movpaste.movmention.movMobile Web - Chromemchrome.movMobile Web - Safarimsafari.movDesktopdesktop.moviOSios.movAndroidandroid.mov |
aimane-chnaif
left a comment
There was a problem hiding this comment.
@MariaHCD all yours!
MariaHCD
left a comment
There was a problem hiding this comment.
Let's make the function docs and name a bit more clear. I've posted my suggestions but open to your opinions as well!
|
✋ 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/MariaHCD in version: 1.3.42-0 🚀
|
|
🚀 Deployed to production by https://github.com/jasperhuangg in version: 1.3.42-26 🚀
|
| }; | ||
| if (comment !== newComment) { | ||
| const remainder = prevState.value.slice(prevState.selection.end).length; | ||
| const remainder = ComposerUtils.getCommonSuffixLength(comment, newComment); |
There was a problem hiding this comment.
Coming from #27195, this has caused a small inconsistency between the composer when sending a message and when editing it.
We should have used the same calculation for the remainder (getCommonSuffixLength) in ReportActionItemMessageEdit too.
Details
Introduced
getCommonSuffixLengthand improved current logic of placing cursor after emoji is typedFixed Issues
$ #17275
PROPOSAL: #17275 (comment)
Tests
:smmile:and move your cursor after secondmand remove it to place your cursor in the middle of text when emoji name is completedOffline tests
Same as tests
QA Steps
Same as 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 */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
Web
web-emoji.mov
Mobile Web - Chrome
mWeb-emoji.mp4
Mobile Web - Safari
safari-emoji.mp4
Desktop
desktop-emoji.mov
iOS
ios-emoji.mp4
Android
android-emoji.mp4