Browse Source

pass roomToken to MessageViewHolders

wrap roomToken and ProfileBottomSheet in data class MessagePayload

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
Marcel Hibbe 2 years ago
parent
commit
ae80a4e2ad

+ 1 - 2
app/src/main/java/com/nextcloud/talk/adapters/messages/IncomingLocationMessageViewHolder.kt

@@ -50,7 +50,6 @@ import com.nextcloud.talk.application.NextcloudTalkApplication
 import com.nextcloud.talk.application.NextcloudTalkApplication.Companion.sharedApplication
 import com.nextcloud.talk.application.NextcloudTalkApplication.Companion.sharedApplication
 import com.nextcloud.talk.databinding.ItemCustomIncomingLocationMessageBinding
 import com.nextcloud.talk.databinding.ItemCustomIncomingLocationMessageBinding
 import com.nextcloud.talk.models.json.chat.ChatMessage
 import com.nextcloud.talk.models.json.chat.ChatMessage
-import com.nextcloud.talk.ui.bottom.sheet.ProfileBottomSheet
 import com.nextcloud.talk.utils.ApiUtils
 import com.nextcloud.talk.utils.ApiUtils
 import com.nextcloud.talk.utils.DisplayUtils
 import com.nextcloud.talk.utils.DisplayUtils
 import com.nextcloud.talk.utils.UriUtils
 import com.nextcloud.talk.utils.UriUtils
@@ -117,7 +116,7 @@ class IncomingLocationMessageViewHolder(incomingView: View, payload: Any) : Mess
         if (!TextUtils.isEmpty(author)) {
         if (!TextUtils.isEmpty(author)) {
             binding.messageAuthor.text = author
             binding.messageAuthor.text = author
             binding.messageUserAvatar.setOnClickListener {
             binding.messageUserAvatar.setOnClickListener {
-                (payload as? ProfileBottomSheet)?.showFor(message.actorId!!, itemView.context)
+                (payload as? MessagePayload)?.profileBottomSheet?.showFor(message.actorId!!, itemView.context)
             }
             }
         } else {
         } else {
             binding.messageAuthor.setText(R.string.nc_nick_guest)
             binding.messageAuthor.setText(R.string.nc_nick_guest)

+ 2 - 5
app/src/main/java/com/nextcloud/talk/adapters/messages/IncomingPollMessageViewHolder.kt

@@ -41,7 +41,6 @@ import com.nextcloud.talk.application.NextcloudTalkApplication.Companion.sharedA
 import com.nextcloud.talk.databinding.ItemCustomIncomingPollMessageBinding
 import com.nextcloud.talk.databinding.ItemCustomIncomingPollMessageBinding
 import com.nextcloud.talk.models.json.chat.ChatMessage
 import com.nextcloud.talk.models.json.chat.ChatMessage
 import com.nextcloud.talk.polls.ui.PollMainDialogFragment
 import com.nextcloud.talk.polls.ui.PollMainDialogFragment
-import com.nextcloud.talk.ui.bottom.sheet.ProfileBottomSheet
 import com.nextcloud.talk.utils.ApiUtils
 import com.nextcloud.talk.utils.ApiUtils
 import com.nextcloud.talk.utils.DisplayUtils
 import com.nextcloud.talk.utils.DisplayUtils
 import com.nextcloud.talk.utils.preferences.AppPreferences
 import com.nextcloud.talk.utils.preferences.AppPreferences
@@ -116,9 +115,7 @@ class IncomingPollMessageViewHolder(incomingView: View, payload: Any) : MessageH
         if (pollId != null && pollName != null) {
         if (pollId != null && pollName != null) {
             binding.messagePollTitle.text = pollName
             binding.messagePollTitle.text = pollName
 
 
-            // TODO: how to get room token here?
-            // val roomToken = "???????????????????????????"
-            val roomToken = "i7ht5k9n"
+            val roomToken = (payload as? MessagePayload)!!.roomToken
 
 
             binding.bubble.setOnClickListener {
             binding.bubble.setOnClickListener {
                 val pollVoteDialog = PollMainDialogFragment.newInstance(
                 val pollVoteDialog = PollMainDialogFragment.newInstance(
@@ -151,7 +148,7 @@ class IncomingPollMessageViewHolder(incomingView: View, payload: Any) : MessageH
         if (!TextUtils.isEmpty(author)) {
         if (!TextUtils.isEmpty(author)) {
             binding.messageAuthor.text = author
             binding.messageAuthor.text = author
             binding.messageUserAvatar.setOnClickListener {
             binding.messageUserAvatar.setOnClickListener {
-                (payload as? ProfileBottomSheet)?.showFor(message.actorId!!, itemView.context)
+                (payload as? MessagePayload)?.profileBottomSheet?.showFor(message.actorId!!, itemView.context)
             }
             }
         } else {
         } else {
             binding.messageAuthor.setText(R.string.nc_nick_guest)
             binding.messageAuthor.setText(R.string.nc_nick_guest)

+ 1 - 2
app/src/main/java/com/nextcloud/talk/adapters/messages/IncomingVoiceMessageViewHolder.kt

@@ -48,7 +48,6 @@ import com.nextcloud.talk.application.NextcloudTalkApplication
 import com.nextcloud.talk.application.NextcloudTalkApplication.Companion.sharedApplication
 import com.nextcloud.talk.application.NextcloudTalkApplication.Companion.sharedApplication
 import com.nextcloud.talk.databinding.ItemCustomIncomingVoiceMessageBinding
 import com.nextcloud.talk.databinding.ItemCustomIncomingVoiceMessageBinding
 import com.nextcloud.talk.models.json.chat.ChatMessage
 import com.nextcloud.talk.models.json.chat.ChatMessage
-import com.nextcloud.talk.ui.bottom.sheet.ProfileBottomSheet
 import com.nextcloud.talk.utils.ApiUtils
 import com.nextcloud.talk.utils.ApiUtils
 import com.nextcloud.talk.utils.DisplayUtils
 import com.nextcloud.talk.utils.DisplayUtils
 import com.nextcloud.talk.utils.preferences.AppPreferences
 import com.nextcloud.talk.utils.preferences.AppPreferences
@@ -210,7 +209,7 @@ class IncomingVoiceMessageViewHolder(incomingView: View, payload: Any) : Message
         if (!TextUtils.isEmpty(author)) {
         if (!TextUtils.isEmpty(author)) {
             binding.messageAuthor.text = author
             binding.messageAuthor.text = author
             binding.messageUserAvatar.setOnClickListener {
             binding.messageUserAvatar.setOnClickListener {
-                (payload as? ProfileBottomSheet)?.showFor(message.actorId!!, itemView.context)
+                (payload as? MessagePayload)?.profileBottomSheet?.showFor(message.actorId!!, itemView.context)
             }
             }
         } else {
         } else {
             binding.messageAuthor.setText(R.string.nc_nick_guest)
             binding.messageAuthor.setText(R.string.nc_nick_guest)

+ 1 - 3
app/src/main/java/com/nextcloud/talk/adapters/messages/MagicIncomingTextMessageViewHolder.kt

@@ -47,14 +47,12 @@ import com.nextcloud.talk.application.NextcloudTalkApplication
 import com.nextcloud.talk.application.NextcloudTalkApplication.Companion.sharedApplication
 import com.nextcloud.talk.application.NextcloudTalkApplication.Companion.sharedApplication
 import com.nextcloud.talk.databinding.ItemCustomIncomingTextMessageBinding
 import com.nextcloud.talk.databinding.ItemCustomIncomingTextMessageBinding
 import com.nextcloud.talk.models.json.chat.ChatMessage
 import com.nextcloud.talk.models.json.chat.ChatMessage
-import com.nextcloud.talk.ui.bottom.sheet.ProfileBottomSheet
 import com.nextcloud.talk.ui.recyclerview.MessageSwipeCallback
 import com.nextcloud.talk.ui.recyclerview.MessageSwipeCallback
 import com.nextcloud.talk.utils.ApiUtils
 import com.nextcloud.talk.utils.ApiUtils
 import com.nextcloud.talk.utils.DisplayUtils
 import com.nextcloud.talk.utils.DisplayUtils
 import com.nextcloud.talk.utils.TextMatchers
 import com.nextcloud.talk.utils.TextMatchers
 import com.nextcloud.talk.utils.preferences.AppPreferences
 import com.nextcloud.talk.utils.preferences.AppPreferences
 import com.stfalcon.chatkit.messages.MessageHolders
 import com.stfalcon.chatkit.messages.MessageHolders
-import java.util.HashMap
 import javax.inject.Inject
 import javax.inject.Inject
 
 
 @AutoInjector(NextcloudTalkApplication::class)
 @AutoInjector(NextcloudTalkApplication::class)
@@ -136,7 +134,7 @@ class MagicIncomingTextMessageViewHolder(itemView: View, payload: Any) : Message
         if (!TextUtils.isEmpty(message.actorDisplayName)) {
         if (!TextUtils.isEmpty(message.actorDisplayName)) {
             binding.messageAuthor.text = message.actorDisplayName
             binding.messageAuthor.text = message.actorDisplayName
             binding.messageUserAvatar.setOnClickListener {
             binding.messageUserAvatar.setOnClickListener {
-                (payload as? ProfileBottomSheet)?.showFor(message.actorId!!, itemView.context)
+                (payload as? MessagePayload)?.profileBottomSheet?.showFor(message.actorId!!, itemView.context)
             }
             }
         } else {
         } else {
             binding.messageAuthor.setText(R.string.nc_nick_guest)
             binding.messageAuthor.setText(R.string.nc_nick_guest)

+ 3 - 3
app/src/main/java/com/nextcloud/talk/adapters/messages/MagicPreviewMessageViewHolder.java

@@ -49,7 +49,6 @@ import com.nextcloud.talk.components.filebrowser.webdav.ReadFilesystemOperation;
 import com.nextcloud.talk.data.user.model.User;
 import com.nextcloud.talk.data.user.model.User;
 import com.nextcloud.talk.databinding.ReactionsInsideMessageBinding;
 import com.nextcloud.talk.databinding.ReactionsInsideMessageBinding;
 import com.nextcloud.talk.models.json.chat.ChatMessage;
 import com.nextcloud.talk.models.json.chat.ChatMessage;
-import com.nextcloud.talk.ui.bottom.sheet.ProfileBottomSheet;
 import com.nextcloud.talk.utils.DisplayUtils;
 import com.nextcloud.talk.utils.DisplayUtils;
 import com.nextcloud.talk.utils.DrawableUtils;
 import com.nextcloud.talk.utils.DrawableUtils;
 import com.nextcloud.talk.utils.FileViewerUtils;
 import com.nextcloud.talk.utils.FileViewerUtils;
@@ -125,8 +124,9 @@ public abstract class MagicPreviewMessageViewHolder extends MessageHolders.Incom
             } else {
             } else {
                 userAvatar.setVisibility(View.VISIBLE);
                 userAvatar.setVisibility(View.VISIBLE);
                 userAvatar.setOnClickListener(v -> {
                 userAvatar.setOnClickListener(v -> {
-                    if (payload instanceof ProfileBottomSheet) {
-                        ((ProfileBottomSheet) payload).showFor(message.getActorId(), v.getContext());
+                    if (payload instanceof MessagePayload) {
+                        ((MessagePayload) payload).getProfileBottomSheet().showFor(message.getActorId(),
+                                                                                   v.getContext());
                     }
                     }
                 });
                 });
 
 

+ 8 - 0
app/src/main/java/com/nextcloud/talk/adapters/messages/MessagePayload.kt

@@ -0,0 +1,8 @@
+package com.nextcloud.talk.adapters.messages
+
+import com.nextcloud.talk.ui.bottom.sheet.ProfileBottomSheet
+
+data class MessagePayload(
+    val roomToken: String,
+    val profileBottomSheet: ProfileBottomSheet
+)

+ 9 - 6
app/src/main/java/com/nextcloud/talk/controllers/ChatController.kt

@@ -111,6 +111,7 @@ import com.nextcloud.talk.adapters.messages.MagicIncomingTextMessageViewHolder
 import com.nextcloud.talk.adapters.messages.MagicOutcomingTextMessageViewHolder
 import com.nextcloud.talk.adapters.messages.MagicOutcomingTextMessageViewHolder
 import com.nextcloud.talk.adapters.messages.MagicSystemMessageViewHolder
 import com.nextcloud.talk.adapters.messages.MagicSystemMessageViewHolder
 import com.nextcloud.talk.adapters.messages.MagicUnreadNoticeMessageViewHolder
 import com.nextcloud.talk.adapters.messages.MagicUnreadNoticeMessageViewHolder
+import com.nextcloud.talk.adapters.messages.MessagePayload
 import com.nextcloud.talk.adapters.messages.OutcomingLocationMessageViewHolder
 import com.nextcloud.talk.adapters.messages.OutcomingLocationMessageViewHolder
 import com.nextcloud.talk.adapters.messages.OutcomingPollMessageViewHolder
 import com.nextcloud.talk.adapters.messages.OutcomingPollMessageViewHolder
 import com.nextcloud.talk.adapters.messages.OutcomingPreviewMessageViewHolder
 import com.nextcloud.talk.adapters.messages.OutcomingPreviewMessageViewHolder
@@ -485,10 +486,12 @@ class ChatController(args: Bundle) :
             val messageHolders = MessageHolders()
             val messageHolders = MessageHolders()
             val profileBottomSheet = ProfileBottomSheet(ncApi!!, conversationUser!!, router)
             val profileBottomSheet = ProfileBottomSheet(ncApi!!, conversationUser!!, router)
 
 
+            val payload = MessagePayload(roomToken!!, profileBottomSheet)
+
             messageHolders.setIncomingTextConfig(
             messageHolders.setIncomingTextConfig(
                 MagicIncomingTextMessageViewHolder::class.java,
                 MagicIncomingTextMessageViewHolder::class.java,
                 R.layout.item_custom_incoming_text_message,
                 R.layout.item_custom_incoming_text_message,
-                profileBottomSheet
+                payload
             )
             )
             messageHolders.setOutcomingTextConfig(
             messageHolders.setOutcomingTextConfig(
                 MagicOutcomingTextMessageViewHolder::class.java,
                 MagicOutcomingTextMessageViewHolder::class.java,
@@ -498,7 +501,7 @@ class ChatController(args: Bundle) :
             messageHolders.setIncomingImageConfig(
             messageHolders.setIncomingImageConfig(
                 IncomingPreviewMessageViewHolder::class.java,
                 IncomingPreviewMessageViewHolder::class.java,
                 R.layout.item_custom_incoming_preview_message,
                 R.layout.item_custom_incoming_preview_message,
-                profileBottomSheet
+                payload
             )
             )
 
 
             messageHolders.setOutcomingImageConfig(
             messageHolders.setOutcomingImageConfig(
@@ -527,7 +530,7 @@ class ChatController(args: Bundle) :
             messageHolders.registerContentType(
             messageHolders.registerContentType(
                 CONTENT_TYPE_LOCATION,
                 CONTENT_TYPE_LOCATION,
                 IncomingLocationMessageViewHolder::class.java,
                 IncomingLocationMessageViewHolder::class.java,
-                profileBottomSheet,
+                payload,
                 R.layout.item_custom_incoming_location_message,
                 R.layout.item_custom_incoming_location_message,
                 OutcomingLocationMessageViewHolder::class.java,
                 OutcomingLocationMessageViewHolder::class.java,
                 null,
                 null,
@@ -538,7 +541,7 @@ class ChatController(args: Bundle) :
             messageHolders.registerContentType(
             messageHolders.registerContentType(
                 CONTENT_TYPE_VOICE_MESSAGE,
                 CONTENT_TYPE_VOICE_MESSAGE,
                 IncomingVoiceMessageViewHolder::class.java,
                 IncomingVoiceMessageViewHolder::class.java,
-                profileBottomSheet,
+                payload,
                 R.layout.item_custom_incoming_voice_message,
                 R.layout.item_custom_incoming_voice_message,
                 OutcomingVoiceMessageViewHolder::class.java,
                 OutcomingVoiceMessageViewHolder::class.java,
                 null,
                 null,
@@ -549,10 +552,10 @@ class ChatController(args: Bundle) :
             messageHolders.registerContentType(
             messageHolders.registerContentType(
                 CONTENT_TYPE_POLL,
                 CONTENT_TYPE_POLL,
                 IncomingPollMessageViewHolder::class.java,
                 IncomingPollMessageViewHolder::class.java,
-                profileBottomSheet,
+                payload,
                 R.layout.item_custom_incoming_poll_message,
                 R.layout.item_custom_incoming_poll_message,
                 OutcomingPollMessageViewHolder::class.java,
                 OutcomingPollMessageViewHolder::class.java,
-                null,
+                payload,
                 R.layout.item_custom_outcoming_poll_message,
                 R.layout.item_custom_outcoming_poll_message,
                 this
                 this
             )
             )