From d8454220978cc4615f9403abd683d71d1a6cd16a Mon Sep 17 00:00:00 2001 From: Marcel Hibbe Date: Fri, 1 Apr 2022 22:32:04 +0200 Subject: [PATCH] open dialog when clicked on reactions (WIP) Signed-off-by: Marcel Hibbe --- .../MagicIncomingTextMessageViewHolder.kt | 13 +++-- .../adapters/messages/ReactionsInterface.kt | 7 +++ .../messages/TalkMessagesListAdapter.java | 4 ++ .../talk/controllers/ChatController.kt | 15 ++++- .../talk/ui/dialog/ShowReactionsDialog.kt | 23 ++++++++ .../res/layout/dialog_message_reactions.xml | 55 +++++++++++++++++++ 6 files changed, 112 insertions(+), 5 deletions(-) create mode 100644 app/src/main/java/com/nextcloud/talk/adapters/messages/ReactionsInterface.kt create mode 100644 app/src/main/java/com/nextcloud/talk/ui/dialog/ShowReactionsDialog.kt create mode 100644 app/src/main/res/layout/dialog_message_reactions.xml diff --git a/app/src/main/java/com/nextcloud/talk/adapters/messages/MagicIncomingTextMessageViewHolder.kt b/app/src/main/java/com/nextcloud/talk/adapters/messages/MagicIncomingTextMessageViewHolder.kt index 3be34db31..44d17ab6b 100644 --- a/app/src/main/java/com/nextcloud/talk/adapters/messages/MagicIncomingTextMessageViewHolder.kt +++ b/app/src/main/java/com/nextcloud/talk/adapters/messages/MagicIncomingTextMessageViewHolder.kt @@ -42,10 +42,6 @@ import android.widget.TextView import androidx.core.content.ContextCompat import androidx.core.content.res.ResourcesCompat import androidx.core.view.ViewCompat -import androidx.core.view.children -import androidx.core.view.get -import androidx.core.view.marginEnd -import androidx.core.view.updateLayoutParams import autodagger.AutoInjector import coil.load import com.amulyakhare.textdrawable.TextDrawable @@ -79,6 +75,8 @@ class MagicIncomingTextMessageViewHolder(itemView: View, payload: Any) : Message @Inject var appPreferences: AppPreferences? = null + lateinit var reactionsInterface: ReactionsInterface + override fun onBind(message: ChatMessage) { super.onBind(message) sharedApplication!!.componentApplication.inject(this) @@ -158,6 +156,9 @@ class MagicIncomingTextMessageViewHolder(itemView: View, payload: Any) : Message break } } + binding.reactionsEmojiWrapper.setOnClickListener { + reactionsInterface.onClickReactions(message) + } } } @@ -300,6 +301,10 @@ class MagicIncomingTextMessageViewHolder(itemView: View, payload: Any) : Message return messageStringInternal } + fun assignAdapter(reactionsInterface: ReactionsInterface) { + this.reactionsInterface = reactionsInterface + } + companion object { const val TEXT_SIZE_MULTIPLIER = 2.5 const val MAX_EMOJIS_TO_DISPLAY = 4 diff --git a/app/src/main/java/com/nextcloud/talk/adapters/messages/ReactionsInterface.kt b/app/src/main/java/com/nextcloud/talk/adapters/messages/ReactionsInterface.kt new file mode 100644 index 000000000..89c9625c4 --- /dev/null +++ b/app/src/main/java/com/nextcloud/talk/adapters/messages/ReactionsInterface.kt @@ -0,0 +1,7 @@ +package com.nextcloud.talk.adapters.messages + +import com.nextcloud.talk.models.json.chat.ChatMessage + +interface ReactionsInterface { + fun onClickReactions(message: ChatMessage) +} \ No newline at end of file diff --git a/app/src/main/java/com/nextcloud/talk/adapters/messages/TalkMessagesListAdapter.java b/app/src/main/java/com/nextcloud/talk/adapters/messages/TalkMessagesListAdapter.java index 916253a5c..71a914eee 100644 --- a/app/src/main/java/com/nextcloud/talk/adapters/messages/TalkMessagesListAdapter.java +++ b/app/src/main/java/com/nextcloud/talk/adapters/messages/TalkMessagesListAdapter.java @@ -54,5 +54,9 @@ public class TalkMessagesListAdapter extends MessagesListAda } else if (holder instanceof OutcomingVoiceMessageViewHolder) { ((OutcomingVoiceMessageViewHolder) holder).assignAdapter(chatController); } + + if (holder instanceof MagicIncomingTextMessageViewHolder) { + ((MagicIncomingTextMessageViewHolder) holder).assignAdapter(chatController); + } } } diff --git a/app/src/main/java/com/nextcloud/talk/controllers/ChatController.kt b/app/src/main/java/com/nextcloud/talk/controllers/ChatController.kt index 404ec8be5..692af7567 100644 --- a/app/src/main/java/com/nextcloud/talk/controllers/ChatController.kt +++ b/app/src/main/java/com/nextcloud/talk/controllers/ChatController.kt @@ -110,6 +110,7 @@ import com.nextcloud.talk.adapters.messages.MagicUnreadNoticeMessageViewHolder import com.nextcloud.talk.adapters.messages.OutcomingLocationMessageViewHolder import com.nextcloud.talk.adapters.messages.OutcomingPreviewMessageViewHolder import com.nextcloud.talk.adapters.messages.OutcomingVoiceMessageViewHolder +import com.nextcloud.talk.adapters.messages.ReactionsInterface import com.nextcloud.talk.adapters.messages.TalkMessagesListAdapter import com.nextcloud.talk.adapters.messages.VoiceMessageInterface import com.nextcloud.talk.api.NcApi @@ -139,6 +140,7 @@ import com.nextcloud.talk.presenters.MentionAutocompletePresenter import com.nextcloud.talk.ui.bottom.sheet.ProfileBottomSheet import com.nextcloud.talk.ui.dialog.AttachmentDialog import com.nextcloud.talk.ui.dialog.MessageActionsDialog +import com.nextcloud.talk.ui.dialog.ShowReactionsDialog import com.nextcloud.talk.ui.recyclerview.MessageSwipeActions import com.nextcloud.talk.ui.recyclerview.MessageSwipeCallback import com.nextcloud.talk.utils.ApiUtils @@ -203,7 +205,8 @@ class ChatController(args: Bundle) : MessagesListAdapter.Formatter, MessagesListAdapter.OnMessageViewLongClickListener, ContentChecker, - VoiceMessageInterface { + VoiceMessageInterface, + ReactionsInterface { private val binding: ControllerChatBinding by viewBinding(ControllerChatBinding::bind) @@ -919,6 +922,16 @@ class ChatController(args: Bundle) : } } + override fun onClickReactions(chatMessage: ChatMessage) { + Log.d(TAG, "onClickReactions" + chatMessage) + + activity?.let { + ShowReactionsDialog( + activity!! + ).show() + } + } + @SuppressLint("LongLogTag") private fun downloadFileToCache(message: ChatMessage) { message.isDownloadingVoiceMessage = true diff --git a/app/src/main/java/com/nextcloud/talk/ui/dialog/ShowReactionsDialog.kt b/app/src/main/java/com/nextcloud/talk/ui/dialog/ShowReactionsDialog.kt new file mode 100644 index 000000000..1bdfb041a --- /dev/null +++ b/app/src/main/java/com/nextcloud/talk/ui/dialog/ShowReactionsDialog.kt @@ -0,0 +1,23 @@ +package com.nextcloud.talk.ui.dialog + +import android.app.Activity +import android.os.Bundle +import android.view.ViewGroup +import com.google.android.material.bottomsheet.BottomSheetDialog +import com.nextcloud.talk.databinding.DialogMessageActionsBinding +import com.nextcloud.talk.databinding.DialogMessageReactionsBinding + +class ShowReactionsDialog( + val activity: Activity +) : BottomSheetDialog(activity) { + + private lateinit var dialogMessageReactionsBinding: DialogMessageReactionsBinding + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + dialogMessageReactionsBinding = DialogMessageReactionsBinding.inflate(layoutInflater) + setContentView(dialogMessageReactionsBinding.root) + window?.setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT) + } + +} \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_message_reactions.xml b/app/src/main/res/layout/dialog_message_reactions.xml new file mode 100644 index 000000000..5d585b7d1 --- /dev/null +++ b/app/src/main/res/layout/dialog_message_reactions.xml @@ -0,0 +1,55 @@ + + + + + + + + + + +