From ae80a4e2ad40fa69adc60a7db154eb736efbcf06 Mon Sep 17 00:00:00 2001 From: Marcel Hibbe Date: Wed, 8 Jun 2022 18:05:29 +0200 Subject: [PATCH] pass roomToken to MessageViewHolders wrap roomToken and ProfileBottomSheet in data class MessagePayload Signed-off-by: Marcel Hibbe --- .../messages/IncomingLocationMessageViewHolder.kt | 3 +-- .../messages/IncomingPollMessageViewHolder.kt | 7 ++----- .../messages/IncomingVoiceMessageViewHolder.kt | 3 +-- .../MagicIncomingTextMessageViewHolder.kt | 4 +--- .../messages/MagicPreviewMessageViewHolder.java | 6 +++--- .../talk/adapters/messages/MessagePayload.kt | 8 ++++++++ .../nextcloud/talk/controllers/ChatController.kt | 15 +++++++++------ 7 files changed, 25 insertions(+), 21 deletions(-) create mode 100644 app/src/main/java/com/nextcloud/talk/adapters/messages/MessagePayload.kt diff --git a/app/src/main/java/com/nextcloud/talk/adapters/messages/IncomingLocationMessageViewHolder.kt b/app/src/main/java/com/nextcloud/talk/adapters/messages/IncomingLocationMessageViewHolder.kt index 43d163878..2e9e723d4 100644 --- a/app/src/main/java/com/nextcloud/talk/adapters/messages/IncomingLocationMessageViewHolder.kt +++ b/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.databinding.ItemCustomIncomingLocationMessageBinding 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.DisplayUtils import com.nextcloud.talk.utils.UriUtils @@ -117,7 +116,7 @@ class IncomingLocationMessageViewHolder(incomingView: View, payload: Any) : Mess if (!TextUtils.isEmpty(author)) { binding.messageAuthor.text = author binding.messageUserAvatar.setOnClickListener { - (payload as? ProfileBottomSheet)?.showFor(message.actorId!!, itemView.context) + (payload as? MessagePayload)?.profileBottomSheet?.showFor(message.actorId!!, itemView.context) } } else { binding.messageAuthor.setText(R.string.nc_nick_guest) diff --git a/app/src/main/java/com/nextcloud/talk/adapters/messages/IncomingPollMessageViewHolder.kt b/app/src/main/java/com/nextcloud/talk/adapters/messages/IncomingPollMessageViewHolder.kt index c79c8dc8b..b1669bce3 100644 --- a/app/src/main/java/com/nextcloud/talk/adapters/messages/IncomingPollMessageViewHolder.kt +++ b/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.models.json.chat.ChatMessage 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.DisplayUtils import com.nextcloud.talk.utils.preferences.AppPreferences @@ -116,9 +115,7 @@ class IncomingPollMessageViewHolder(incomingView: View, payload: Any) : MessageH if (pollId != null && pollName != null) { 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 { val pollVoteDialog = PollMainDialogFragment.newInstance( @@ -151,7 +148,7 @@ class IncomingPollMessageViewHolder(incomingView: View, payload: Any) : MessageH if (!TextUtils.isEmpty(author)) { binding.messageAuthor.text = author binding.messageUserAvatar.setOnClickListener { - (payload as? ProfileBottomSheet)?.showFor(message.actorId!!, itemView.context) + (payload as? MessagePayload)?.profileBottomSheet?.showFor(message.actorId!!, itemView.context) } } else { binding.messageAuthor.setText(R.string.nc_nick_guest) diff --git a/app/src/main/java/com/nextcloud/talk/adapters/messages/IncomingVoiceMessageViewHolder.kt b/app/src/main/java/com/nextcloud/talk/adapters/messages/IncomingVoiceMessageViewHolder.kt index a7e904da4..e06604763 100644 --- a/app/src/main/java/com/nextcloud/talk/adapters/messages/IncomingVoiceMessageViewHolder.kt +++ b/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.databinding.ItemCustomIncomingVoiceMessageBinding 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.DisplayUtils import com.nextcloud.talk.utils.preferences.AppPreferences @@ -210,7 +209,7 @@ class IncomingVoiceMessageViewHolder(incomingView: View, payload: Any) : Message if (!TextUtils.isEmpty(author)) { binding.messageAuthor.text = author binding.messageUserAvatar.setOnClickListener { - (payload as? ProfileBottomSheet)?.showFor(message.actorId!!, itemView.context) + (payload as? MessagePayload)?.profileBottomSheet?.showFor(message.actorId!!, itemView.context) } } else { binding.messageAuthor.setText(R.string.nc_nick_guest) 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 d098ba697..95152a920 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 @@ -47,14 +47,12 @@ import com.nextcloud.talk.application.NextcloudTalkApplication import com.nextcloud.talk.application.NextcloudTalkApplication.Companion.sharedApplication import com.nextcloud.talk.databinding.ItemCustomIncomingTextMessageBinding 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.utils.ApiUtils import com.nextcloud.talk.utils.DisplayUtils import com.nextcloud.talk.utils.TextMatchers import com.nextcloud.talk.utils.preferences.AppPreferences import com.stfalcon.chatkit.messages.MessageHolders -import java.util.HashMap import javax.inject.Inject @AutoInjector(NextcloudTalkApplication::class) @@ -136,7 +134,7 @@ class MagicIncomingTextMessageViewHolder(itemView: View, payload: Any) : Message if (!TextUtils.isEmpty(message.actorDisplayName)) { binding.messageAuthor.text = message.actorDisplayName binding.messageUserAvatar.setOnClickListener { - (payload as? ProfileBottomSheet)?.showFor(message.actorId!!, itemView.context) + (payload as? MessagePayload)?.profileBottomSheet?.showFor(message.actorId!!, itemView.context) } } else { binding.messageAuthor.setText(R.string.nc_nick_guest) diff --git a/app/src/main/java/com/nextcloud/talk/adapters/messages/MagicPreviewMessageViewHolder.java b/app/src/main/java/com/nextcloud/talk/adapters/messages/MagicPreviewMessageViewHolder.java index 0732e3341..48e33915e 100644 --- a/app/src/main/java/com/nextcloud/talk/adapters/messages/MagicPreviewMessageViewHolder.java +++ b/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.databinding.ReactionsInsideMessageBinding; 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.DrawableUtils; import com.nextcloud.talk.utils.FileViewerUtils; @@ -125,8 +124,9 @@ public abstract class MagicPreviewMessageViewHolder extends MessageHolders.Incom } else { userAvatar.setVisibility(View.VISIBLE); 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()); } }); diff --git a/app/src/main/java/com/nextcloud/talk/adapters/messages/MessagePayload.kt b/app/src/main/java/com/nextcloud/talk/adapters/messages/MessagePayload.kt new file mode 100644 index 000000000..59be4b481 --- /dev/null +++ b/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 +) 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 dbe202e39..2b9a698b6 100644 --- a/app/src/main/java/com/nextcloud/talk/controllers/ChatController.kt +++ b/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.MagicSystemMessageViewHolder 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.OutcomingPollMessageViewHolder import com.nextcloud.talk.adapters.messages.OutcomingPreviewMessageViewHolder @@ -485,10 +486,12 @@ class ChatController(args: Bundle) : val messageHolders = MessageHolders() val profileBottomSheet = ProfileBottomSheet(ncApi!!, conversationUser!!, router) + val payload = MessagePayload(roomToken!!, profileBottomSheet) + messageHolders.setIncomingTextConfig( MagicIncomingTextMessageViewHolder::class.java, R.layout.item_custom_incoming_text_message, - profileBottomSheet + payload ) messageHolders.setOutcomingTextConfig( MagicOutcomingTextMessageViewHolder::class.java, @@ -498,7 +501,7 @@ class ChatController(args: Bundle) : messageHolders.setIncomingImageConfig( IncomingPreviewMessageViewHolder::class.java, R.layout.item_custom_incoming_preview_message, - profileBottomSheet + payload ) messageHolders.setOutcomingImageConfig( @@ -527,7 +530,7 @@ class ChatController(args: Bundle) : messageHolders.registerContentType( CONTENT_TYPE_LOCATION, IncomingLocationMessageViewHolder::class.java, - profileBottomSheet, + payload, R.layout.item_custom_incoming_location_message, OutcomingLocationMessageViewHolder::class.java, null, @@ -538,7 +541,7 @@ class ChatController(args: Bundle) : messageHolders.registerContentType( CONTENT_TYPE_VOICE_MESSAGE, IncomingVoiceMessageViewHolder::class.java, - profileBottomSheet, + payload, R.layout.item_custom_incoming_voice_message, OutcomingVoiceMessageViewHolder::class.java, null, @@ -549,10 +552,10 @@ class ChatController(args: Bundle) : messageHolders.registerContentType( CONTENT_TYPE_POLL, IncomingPollMessageViewHolder::class.java, - profileBottomSheet, + payload, R.layout.item_custom_incoming_poll_message, OutcomingPollMessageViewHolder::class.java, - null, + payload, R.layout.item_custom_outcoming_poll_message, this )