-
Notifications
You must be signed in to change notification settings - Fork 71
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
Prevent italic or strikethrough emojis on Android #534
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.
Left some suggestions in the comments, also a unit test suite would be much appreciated.
android/src/main/java/com/expensify/livemarkdown/MarkdownUtils.java
Outdated
Show resolved
Hide resolved
android/src/main/java/com/expensify/livemarkdown/MarkdownRange.java
Outdated
Show resolved
Hide resolved
android/src/main/java/com/expensify/livemarkdown/MarkdownRange.java
Outdated
Show resolved
Hide resolved
android/src/main/java/com/expensify/livemarkdown/MarkdownUtils.java
Outdated
Show resolved
Hide resolved
android/src/main/java/com/expensify/livemarkdown/MarkdownUtils.java
Outdated
Show resolved
Hide resolved
android/src/main/java/com/expensify/livemarkdown/MarkdownUtils.java
Outdated
Show resolved
Hide resolved
android/src/main/java/com/expensify/livemarkdown/MarkdownUtils.java
Outdated
Show resolved
Hide resolved
android/src/main/java/com/expensify/livemarkdown/MarkdownUtils.java
Outdated
Show resolved
Hide resolved
android/src/main/java/com/expensify/livemarkdown/MarkdownUtils.java
Outdated
Show resolved
Hide resolved
android/src/main/java/com/expensify/livemarkdown/MarkdownUtils.java
Outdated
Show resolved
Hide resolved
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.
Also, please provide some unit tests in Java to verify the implementation.
android/src/main/java/com/expensify/livemarkdown/MarkdownRange.java
Outdated
Show resolved
Hide resolved
android/src/main/java/com/expensify/livemarkdown/MarkdownRange.java
Outdated
Show resolved
Hide resolved
android/src/main/java/com/expensify/livemarkdown/MarkdownRange.java
Outdated
Show resolved
Hide resolved
android/src/main/java/com/expensify/livemarkdown/MarkdownRange.java
Outdated
Show resolved
Hide resolved
I've tested this pr on very example app platform and E/App platforms and I could not find anything. Everything works well including preventing formatting on emojis. |
import org.json.JSONException; | ||
import org.json.JSONObject; | ||
|
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.
import org.json.JSONException; | |
import org.json.JSONObject; |
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.
Just FYI, I also needed class MarkdownRange
so I added it in #559. I hope you can reuse mine in this PR.
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.
Done in 692de7c
import java.util.ArrayList; | ||
import java.util.List; | ||
|
||
public class RangeSplitter { | ||
public static ArrayList<MarkdownRange> splitRangesOnEmojis(@NonNull List<MarkdownRange> markdownRanges, @NonNull String type) { | ||
Systrace.beginSection(0, "splitRangesOnEmojis"); |
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.
Please wrap beginSection
/endSection
calls with try/finally
block
if (newRange.getLength() > 0) { | ||
newRanges.add(newRange); | ||
} |
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.
Shouldn't this check be symmetric? So it covers both _text😀_
and _😀text_
?
Also, let's rename newRange
and currentRange
to leftRange
and rightRange
.
Let's avoid creating newRange
object at all if possible, i.e. move the constructor call into the conditional.
We decided to close this PR and rewrite the solution to TypeScript at #591. After the discussion, we agreed that after enabling custom parsers in the live markdown library, it would be better not to interfere with their results. Because of that, we moved the range splitting algorithm to the |
Details
This PR fixes adding italics and strikethrough style to the emojis on Android and web platforms
Related Issues
Expensify/App#14676
Manual Tests
_🥰 test 😇 test 🥹_
# *~_🥰 test 😇 test 🥹_~*
Linked PRs