pass roomToken to MessageViewHolders

wrap roomToken and ProfileBottomSheet in data class MessagePayload

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
This commit is contained in:
Marcel Hibbe 2022-06-08 18:05:29 +02:00 committed by Andy Scherzinger (Rebase PR Action)
parent c7e9721809
commit ae80a4e2ad
7 changed files with 25 additions and 21 deletions

View File

@ -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)

View File

@ -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 = (payload as? MessagePayload)!!.roomToken
// val roomToken = "???????????????????????????"
val roomToken = "i7ht5k9n"
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)

View File

@ -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)

View File

@ -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)

View File

@ -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) { if (payload instanceof MessagePayload) {
((ProfileBottomSheet) payload).showFor(message.getActorId(), v.getContext()); ((MessagePayload) payload).getProfileBottomSheet().showFor(message.getActorId(),
v.getContext());
} }
}); });

View File

@ -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
)

View File

@ -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
) )