Skip to content

Commit

Permalink
Refactored isMessageWithSingleEmoticonOnly in TextMatchers to use reg…
Browse files Browse the repository at this point in the history
…ex for single emoji check

Signed-off-by: Smarshal21 <[email protected]>
  • Loading branch information
Smarshal21 committed Nov 18, 2023
1 parent ac030a2 commit f79db0b
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ import com.nextcloud.talk.models.json.chat.ChatMessage
import com.nextcloud.talk.ui.theme.ViewThemeUtils
import com.nextcloud.talk.utils.ApiUtils
import com.nextcloud.talk.utils.DateUtils
import com.nextcloud.talk.utils.TextMatchers
import com.nextcloud.talk.utils.message.MessageUtils
import com.nextcloud.talk.utils.preferences.AppPreferences
import com.stfalcon.chatkit.messages.MessageHolders
Expand Down Expand Up @@ -102,7 +103,8 @@ class IncomingTextMessageViewHolder(itemView: View, payload: Any) :

val messageParameters = message.messageParameters
if (
(messageParameters == null || messageParameters.size <= 0)
(messageParameters == null || messageParameters.size <= 0) &&
TextMatchers.isMessageWithSingleEmoticonOnly(message.text)
) {
textSize = (textSize * TEXT_SIZE_MULTIPLIER).toFloat()
itemView.isSelected = true
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ import com.nextcloud.talk.models.json.chat.ReadStatus
import com.nextcloud.talk.ui.theme.ViewThemeUtils
import com.nextcloud.talk.utils.ApiUtils
import com.nextcloud.talk.utils.DateUtils
import com.nextcloud.talk.utils.TextMatchers
import com.nextcloud.talk.utils.message.MessageUtils
import com.stfalcon.chatkit.messages.MessageHolders.OutcomingTextMessageViewHolder
import javax.inject.Inject
Expand Down Expand Up @@ -88,7 +89,8 @@ class OutcomingTextMessageViewHolder(itemView: View) : OutcomingTextMessageViewH

val messageParameters = message.messageParameters
if (
(messageParameters == null || messageParameters.size <= 0)
(messageParameters == null || messageParameters.size <= 0) &&
TextMatchers.isMessageWithSingleEmoticonOnly(message.text)
) {
textSize = (textSize * TEXT_SIZE_MULTIPLIER).toFloat()
layoutParams.isWrapBefore = true
Expand Down
25 changes: 25 additions & 0 deletions app/src/main/java/com/nextcloud/talk/utils/TextMatchers.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package com.nextcloud.talk.utils;


import java.util.regex.Matcher;
import java.util.regex.Pattern;

import androidx.annotation.Nullable;

public final class TextMatchers {

public static boolean isMessageWithSingleEmoticonOnly(@Nullable final String text) {
if (text == null || text.isEmpty()) {
return false;
}
String emojiRegex = "([\\p{So}\\p{Sk}])";
Pattern pattern = Pattern.compile(emojiRegex);
Matcher matcher = pattern.matcher(text);

int emojiCount = 0;
while (matcher.find()) {
emojiCount++;
}
return emojiCount == 1;
}
}

0 comments on commit f79db0b

Please sign in to comment.