Commit 1f108732 authored by Leonardo Aramaki's avatar Leonardo Aramaki

Update downstream message reactions

parent c8eb71b6
......@@ -32,7 +32,7 @@ abstract class BaseViewHolder<T : BaseViewModel<*>>(
private fun bindReactions() {
data?.let {
if (it.isTailMessage) {
if (it.nextDownStreamMessage == null) {
val recyclerView = itemView.findViewById(R.id.recycler_view_reactions) as RecyclerView
val adapter = MessageReactionsAdapter()
val manager = GridLayoutManager(itemView.context, 6)
......
......@@ -25,7 +25,7 @@ class ChatRoomAdapter(
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): BaseViewHolder<*> {
return when(viewType.toViewType()) {
return when (viewType.toViewType()) {
BaseViewModel.ViewType.MESSAGE -> {
val view = parent.inflate(R.layout.item_message)
MessageViewHolder(view, actionsListener)
......@@ -65,16 +65,15 @@ class ChatRoomAdapter(
if (position + 1 < itemCount) {
val messageAbove = dataSet[position + 1]
if (messageAbove.messageId == dataSet[position].messageId) {
dataSet[position].isTailMessage = true
messageAbove.nextDownStreamMessage = dataSet[position]
}
}
} else {
if (position == 0) {
dataSet[0].isTailMessage = true
}
else if (position - 1 > 0) {
dataSet[0].nextDownStreamMessage = null
} else if (position - 1 > 0) {
if (dataSet[position - 1].messageId != dataSet[position].messageId) {
dataSet[position].isTailMessage = true
dataSet[position].nextDownStreamMessage = null
}
}
}
......@@ -109,11 +108,16 @@ class ChatRoomAdapter(
}
fun updateItem(message: BaseViewModel<*>) {
val index = dataSet.indexOfLast { it.messageId == message.messageId }
var index = dataSet.indexOfLast { it.messageId == message.messageId }
Timber.d("index: $index")
if (index > -1) {
message.nextDownStreamMessage = dataSet[index].nextDownStreamMessage
dataSet[index] = message
notifyItemChanged(index)
while (dataSet[index].nextDownStreamMessage != null) {
dataSet[index].nextDownStreamMessage!!.reactions = message.reactions
notifyItemChanged(--index)
}
}
}
......
......@@ -11,9 +11,9 @@ data class AudioAttachmentViewModel(
override val attachmentUrl: String,
override val attachmentTitle: CharSequence,
override val id: Long,
override val reactions: List<ReactionViewModel>,
override var isTailMessage: Boolean = false
) : BaseFileAttachmentViewModel<AudioAttachment> {
override var reactions: List<ReactionViewModel>,
override var nextDownStreamMessage: BaseViewModel<*>? = null
) : BaseFileAttachmentViewModel<AudioAttachment> {
override val viewType: Int
get() = BaseViewModel.ViewType.AUDIO_ATTACHMENT.viewType
override val layoutId: Int
......
......@@ -9,8 +9,8 @@ interface BaseViewModel<out T> {
val messageId: String
val viewType: Int
val layoutId: Int
val reactions: List<ReactionViewModel>
var isTailMessage: Boolean
var reactions: List<ReactionViewModel>
var nextDownStreamMessage: BaseViewModel<*>?
enum class ViewType(val viewType: Int) {
MESSAGE(0),
......
......@@ -11,8 +11,8 @@ data class ImageAttachmentViewModel(
override val attachmentUrl: String,
override val attachmentTitle: CharSequence,
override val id: Long,
override val reactions: List<ReactionViewModel>,
override var isTailMessage: Boolean = false
override var reactions: List<ReactionViewModel>,
override var nextDownStreamMessage: BaseViewModel<*>? = null
) : BaseFileAttachmentViewModel<ImageAttachment> {
override val viewType: Int
get() = BaseViewModel.ViewType.IMAGE_ATTACHMENT.viewType
......
......@@ -12,8 +12,8 @@ data class MessageViewModel(
override val senderName: CharSequence,
override val content: CharSequence,
override val isPinned: Boolean,
override val reactions: List<ReactionViewModel>,
override var isTailMessage: Boolean = false
override var reactions: List<ReactionViewModel>,
override var nextDownStreamMessage: BaseViewModel<*>? = null
) : BaseMessageViewModel<Message> {
override val viewType: Int
get() = BaseViewModel.ViewType.MESSAGE.viewType
......
......@@ -12,8 +12,8 @@ data class UrlPreviewViewModel(
val hostname: String,
val description: CharSequence?,
val thumbUrl: String?,
override val reactions: List<ReactionViewModel>,
override var isTailMessage: Boolean = false
override var reactions: List<ReactionViewModel>,
override var nextDownStreamMessage: BaseViewModel<*>? = null
) : BaseViewModel<Url> {
override val viewType: Int
get() = BaseViewModel.ViewType.URL_PREVIEW.viewType
......
......@@ -11,8 +11,8 @@ data class VideoAttachmentViewModel(
override val attachmentUrl: String,
override val attachmentTitle: CharSequence,
override val id: Long,
override val reactions: List<ReactionViewModel>,
override var isTailMessage: Boolean = false
override var reactions: List<ReactionViewModel>,
override var nextDownStreamMessage: BaseViewModel<*>? = null
) : BaseFileAttachmentViewModel<VideoAttachment> {
override val viewType: Int
get() = BaseViewModel.ViewType.VIDEO_ATTACHMENT.viewType
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment