diff --git a/app/build.gradle b/app/build.gradle index 70344df11..2b9667670 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -160,6 +160,8 @@ dependencies { implementation 'com.webianks.library:popup-bubble:1.0.5' implementation 'com.amulyakhare:com.amulyakhare.textdrawable:1.0.1' + implementation 'com.kevalpatel2106:emoticongifkeyboard:1.1' + testImplementation 'junit:junit:4.12' androidTestImplementation ('com.android.support.test.espresso:espresso-core:3.0.1', { exclude group: 'com.android.support', module: 'support-annotations' diff --git a/app/src/main/java/com/nextcloud/talk/adapters/messages/MagicIncomingTextMessageViewHolder.java b/app/src/main/java/com/nextcloud/talk/adapters/messages/MagicIncomingTextMessageViewHolder.java index a8788aaff..bdb1ac9d9 100644 --- a/app/src/main/java/com/nextcloud/talk/adapters/messages/MagicIncomingTextMessageViewHolder.java +++ b/app/src/main/java/com/nextcloud/talk/adapters/messages/MagicIncomingTextMessageViewHolder.java @@ -26,6 +26,7 @@ import android.text.TextUtils; import android.view.View; import android.widget.TextView; +import com.kevalpatel2106.emoticongifkeyboard.widget.EmoticonTextView; import com.nextcloud.talk.R; import com.nextcloud.talk.application.NextcloudTalkApplication; import com.nextcloud.talk.models.database.UserEntity; @@ -50,7 +51,7 @@ public class MagicIncomingTextMessageViewHolder TextView messageAuthor; @BindView(R.id.messageText) - TextView messageText; + EmoticonTextView messageText; @Inject UserUtils userUtils; diff --git a/app/src/main/java/com/nextcloud/talk/adapters/messages/MagicOutcomingTextMessageViewHolder.java b/app/src/main/java/com/nextcloud/talk/adapters/messages/MagicOutcomingTextMessageViewHolder.java index 950e796f7..a90f66ae2 100644 --- a/app/src/main/java/com/nextcloud/talk/adapters/messages/MagicOutcomingTextMessageViewHolder.java +++ b/app/src/main/java/com/nextcloud/talk/adapters/messages/MagicOutcomingTextMessageViewHolder.java @@ -23,8 +23,8 @@ package com.nextcloud.talk.adapters.messages; import android.text.Spannable; import android.text.SpannableString; import android.view.View; -import android.widget.TextView; +import com.kevalpatel2106.emoticongifkeyboard.widget.EmoticonTextView; import com.nextcloud.talk.R; import com.nextcloud.talk.application.NextcloudTalkApplication; import com.nextcloud.talk.models.database.UserEntity; @@ -44,7 +44,7 @@ import butterknife.ButterKnife; @AutoInjector(NextcloudTalkApplication.class) public class MagicOutcomingTextMessageViewHolder extends MessageHolders.OutcomingTextMessageViewHolder { @BindView(R.id.messageText) - TextView messageText; + EmoticonTextView messageText; @Inject UserUtils userUtils; diff --git a/app/src/main/java/com/nextcloud/talk/controllers/ChatController.java b/app/src/main/java/com/nextcloud/talk/controllers/ChatController.java index aca6016f3..ecca6cdcb 100644 --- a/app/src/main/java/com/nextcloud/talk/controllers/ChatController.java +++ b/app/src/main/java/com/nextcloud/talk/controllers/ChatController.java @@ -75,11 +75,11 @@ import com.nextcloud.talk.models.json.rooms.RoomOverall; import com.nextcloud.talk.models.json.rooms.RoomsOverall; import com.nextcloud.talk.presenters.MentionAutocompletePresenter; import com.nextcloud.talk.utils.ApiUtils; -import com.nextcloud.talk.utils.singletons.ApplicationWideCurrentRoomHolder; import com.nextcloud.talk.utils.KeyboardUtils; import com.nextcloud.talk.utils.bundle.BundleKeys; import com.nextcloud.talk.utils.database.user.UserUtils; import com.nextcloud.talk.utils.glide.GlideApp; +import com.nextcloud.talk.utils.singletons.ApplicationWideCurrentRoomHolder; import com.otaliastudios.autocomplete.Autocomplete; import com.otaliastudios.autocomplete.AutocompleteCallback; import com.otaliastudios.autocomplete.AutocompletePresenter; @@ -92,6 +92,7 @@ import com.stfalcon.chatkit.messages.MessagesListAdapter; import com.stfalcon.chatkit.utils.DateFormatter; import com.webianks.library.PopupBubble; +import org.apache.commons.lang3.StringEscapeUtils; import org.parceler.Parcels; import java.io.IOException; @@ -374,7 +375,7 @@ public class ChatController extends BaseController implements MessagesListAdapte messageInputView.getInputEditText().setImeOptions(EditorInfo.IME_FLAG_NO_EXTRACT_UI); messageInputView.setInputListener(input -> { - sendMessage(input.toString(), 1); + sendMessage(StringEscapeUtils.escapeJava(input.toString()), 1); return true; }); diff --git a/app/src/main/java/com/nextcloud/talk/models/json/chat/ChatMessage.java b/app/src/main/java/com/nextcloud/talk/models/json/chat/ChatMessage.java index ad5f0677d..d269aa54d 100644 --- a/app/src/main/java/com/nextcloud/talk/models/json/chat/ChatMessage.java +++ b/app/src/main/java/com/nextcloud/talk/models/json/chat/ChatMessage.java @@ -26,6 +26,7 @@ import com.nextcloud.talk.utils.ApiUtils; import com.stfalcon.chatkit.commons.models.IMessage; import com.stfalcon.chatkit.commons.models.IUser; +import org.apache.commons.lang3.StringEscapeUtils; import org.parceler.Parcel; import java.util.Date; @@ -113,6 +114,7 @@ public class ChatMessage implements IMessage { } } - return message; + + return StringEscapeUtils.unescapeJava(message); } } diff --git a/app/src/main/res/layout/item_custom_incoming_text_message.xml b/app/src/main/res/layout/item_custom_incoming_text_message.xml index 0ff89311b..0228e1119 100644 --- a/app/src/main/res/layout/item_custom_incoming_text_message.xml +++ b/app/src/main/res/layout/item_custom_incoming_text_message.xml @@ -55,7 +55,7 @@ android:textColor="@color/colorPrimary" android:textSize="12sp"/> - - + + + + + + + + + + + + + + +