add reactions for LocationMessageViewHolders

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
This commit is contained in:
Marcel Hibbe 2022-04-08 13:22:26 +02:00
parent c4de77ce00
commit 73d50c4f0e
No known key found for this signature in database
GPG Key ID: C793F8B59F43CE7B
5 changed files with 39 additions and 5 deletions

View File

@ -78,6 +78,8 @@ class IncomingLocationMessageViewHolder(incomingView: View, payload: Any) : Mess
@Inject
var appPreferences: AppPreferences? = null
lateinit var reactionsInterface: ReactionsInterface
@SuppressLint("SetTextI18n")
override fun onBind(message: ChatMessage) {
super.onBind(message)
@ -93,13 +95,18 @@ class IncomingLocationMessageViewHolder(incomingView: View, payload: Any) : Mess
val textSize = context?.resources!!.getDimension(R.dimen.chat_text_size)
binding.messageText.setTextSize(TypedValue.COMPLEX_UNIT_PX, textSize)
binding.messageText.text = message.text
binding.messageText.isEnabled = false
// parent message handling
setParentMessageDataOnMessageItem(message)
// geo-location
setLocationDataOnMessageItem(message)
Reaction().showReactions(message, binding.reactions, context!!)
binding.reactions.reactionsEmojiWrapper.setOnClickListener {
reactionsInterface.onClickReactions(message)
}
}
private fun setAvatarAndAuthorOnMessageItem(message: ChatMessage) {
@ -270,6 +277,10 @@ class IncomingLocationMessageViewHolder(incomingView: View, payload: Any) : Mess
return locationGeoLink.replace("geo:", "geo:0,0?q=")
}
fun assignReactionInterface(reactionsInterface: ReactionsInterface) {
this.reactionsInterface = reactionsInterface
}
companion object {
private const val TAG = "LocInMessageView"
}

View File

@ -37,7 +37,6 @@ import android.widget.Toast
import androidx.appcompat.content.res.AppCompatResources
import androidx.core.view.ViewCompat
import autodagger.AutoInjector
import coil.load
import com.google.android.flexbox.FlexboxLayout
import com.nextcloud.talk.R
import com.nextcloud.talk.application.NextcloudTalkApplication
@ -68,6 +67,8 @@ class OutcomingLocationMessageViewHolder(incomingView: View) : MessageHolders
@Inject
var context: Context? = null
lateinit var reactionsInterface: ReactionsInterface
@SuppressLint("SetTextI18n")
override fun onBind(message: ChatMessage) {
super.onBind(message)
@ -84,7 +85,6 @@ class OutcomingLocationMessageViewHolder(incomingView: View) : MessageHolders
binding.messageText.setTextSize(TypedValue.COMPLEX_UNIT_PX, textSize)
binding.messageTime.layoutParams = layoutParams
binding.messageText.text = message.text
binding.messageText.isEnabled = false
// parent message handling
setParentMessageDataOnMessageItem(message)
@ -112,6 +112,12 @@ class OutcomingLocationMessageViewHolder(incomingView: View) : MessageHolders
// geo-location
setLocationDataOnMessageItem(message)
Reaction().showReactions(message, binding.reactions, context!!)
binding.reactions.reactionsEmojiWrapper.setOnClickListener {
reactionsInterface.onClickReactions(message)
}
}
@SuppressLint("SetJavaScriptEnabled", "ClickableViewAccessibility")
@ -245,6 +251,10 @@ class OutcomingLocationMessageViewHolder(incomingView: View) : MessageHolders
return locationGeoLink.replace("geo:", "geo:0,0?q=")
}
fun assignReactionInterface(reactionsInterface: ReactionsInterface) {
this.reactionsInterface = reactionsInterface
}
companion object {
private const val TAG = "LocOutMessageView"
}

View File

@ -53,12 +53,19 @@ public class TalkMessagesListAdapter<M extends IMessage> extends MessagesListAda
((MagicIncomingTextMessageViewHolder) holder).assignReactionInterface(chatController);
} else if (holder instanceof MagicOutcomingTextMessageViewHolder) {
((MagicOutcomingTextMessageViewHolder) holder).assignReactionInterface(chatController);
} else if (holder instanceof IncomingLocationMessageViewHolder) {
((IncomingLocationMessageViewHolder) holder).assignReactionInterface(chatController);
} else if (holder instanceof OutcomingLocationMessageViewHolder) {
((OutcomingLocationMessageViewHolder) holder).assignReactionInterface(chatController);
} else if (holder instanceof IncomingVoiceMessageViewHolder) {
((IncomingVoiceMessageViewHolder) holder).assignVoiceMessageInterface(chatController);
((IncomingVoiceMessageViewHolder) holder).assignReactionInterface(chatController);
} else if (holder instanceof OutcomingVoiceMessageViewHolder) {
((OutcomingVoiceMessageViewHolder) holder).assignVoiceMessageInterface(chatController);
((OutcomingVoiceMessageViewHolder) holder).assignReactionInterface(chatController);
} else if (holder instanceof MagicPreviewMessageViewHolder) {
((MagicPreviewMessageViewHolder) holder).assignPreviewMessageInterface(chatController);
((MagicPreviewMessageViewHolder) holder).assignReactionInterface(chatController);

View File

@ -76,7 +76,7 @@
android:layout_height="wrap_content"
android:lineSpacingMultiplier="1.2"
android:textAlignment="viewStart"
android:textIsSelectable="true"
android:textIsSelectable="false"
app:layout_alignSelf="flex_start"
app:layout_flexGrow="1"
app:layout_wrapBefore="true" />
@ -89,5 +89,8 @@
android:layout_marginStart="8dp"
app:layout_alignSelf="center" />
<include
android:id="@+id/reactions"
layout="@layout/reactions_inside_message" />
</com.google.android.flexbox.FlexboxLayout>
</RelativeLayout>

View File

@ -59,7 +59,7 @@
android:lineSpacingMultiplier="1.2"
android:textAlignment="viewStart"
android:textColorHighlight="@color/nc_grey"
android:textIsSelectable="true"
android:textIsSelectable="false"
tools:text="Talk to you later!" />
<TextView
@ -80,5 +80,8 @@
app:layout_alignSelf="center"
android:contentDescription="@null" />
<include
android:id="@+id/reactions"
layout="@layout/reactions_inside_message" />
</com.google.android.flexbox.FlexboxLayout>
</RelativeLayout>