-
Notifications
You must be signed in to change notification settings - Fork 72
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Remove splitting ranges on emojis on the web #598
base: main
Are you sure you want to change the base?
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM! 👍🏻
One problem I have is that it's not possible to use CMD + ➡️
when the cursor is in front of emoji. (not sure if that's a blocker cc @tomekzaw)
SR
Screen.Recording.2025-01-16.at.16.17.18.mov
const sortedRanges = sortRanges(splittedRanges); | ||
const groupedRanges = groupRanges(sortedRanges); | ||
|
||
const groupedRanges = groupRanges(markdownRanges); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Maybe do the sorting again here.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We don't need it here. Sorting influences only the web and since we blocked spitting ranges for this platform, the output will still be correctly sorted
@@ -252,13 +252,16 @@ function parseExpensiMark(markdown: string): MarkdownRange[] { | |||
); | |||
return []; | |||
} | |||
const sortedRanges = sortRanges(ranges); | |||
let markdownRanges = sortedRanges; | |||
if (Platform.OS === 'android') { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Since parseExpensiMark
is a worklet, let's extract Platform.OS
outside to avoid capturing whole Platform
object in worklet closure.
const isAndroid = Platform.OS === 'android';
function parseExpensiMark(...) {
if (isAndroid) { /* ... */ }
}
const sortedRanges = sortRanges(ranges); | ||
let markdownRanges = sortedRanges; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
const sortedRanges = sortRanges(ranges); | |
let markdownRanges = sortedRanges; | |
let markdownRanges = sortRanges(ranges); |
fontStyle: 'normal', | ||
textDecoration: 'none', |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
fontStyle: 'normal', | |
textDecoration: 'none', | |
fontStyle: 'normal', // remove italic | |
textDecoration: 'none', // remove strikethrough |
Details
This PR fixes the problem with triplicating syntaxes inside the Live Markdown Input, by removing range-splitting logic from the web platform and replacing it with the fix based on CSS styles. In the future, we will focus on fixing the web parser to support splitting emojis among all other styles (especially inline code block) and properly handle tag hierarchy edge cases when building HTML structure.
Related Issues
Expensify/App#55115
Manual Tests
_🥰 test 😇 test 🥹_
# *~_🥰 test 😇 test 🥹_~*
Linked PRs
#597