Commit f15bca5b authored by Kiryl Vashyla's avatar Kiryl Vashyla

Chat history issues fx: on adapter side

parent aaf1bedd
...@@ -150,23 +150,23 @@ class ChatRoomAdapter( ...@@ -150,23 +150,23 @@ class ChatRoomAdapter(
} }
fun prependData(dataSet: List<BaseUiModel<*>>) { fun prependData(dataSet: List<BaseUiModel<*>>) {
val item = dataSet.indexOfFirst { newItem -> //At first we will update all already saved elements with received updated ones
this.dataSet.indexOfFirst { it.messageId == newItem.messageId && it.viewType == newItem.viewType } > -1 val filteredDataSet = dataSet.filter { newItem ->
} val matchedIndex = this.dataSet.indexOfFirst { it.messageId == newItem.messageId && it.viewType == newItem.viewType }
if (item == -1) { if (matchedIndex > -1) {
this.dataSet.addAll(0, dataSet) this.dataSet[matchedIndex] = newItem
notifyItemRangeInserted(0, dataSet.size) notifyItemChanged(matchedIndex)
} else {
dataSet.forEach { item ->
val index = this.dataSet.indexOfFirst {
item.messageId == it.messageId && item.viewType == it.viewType
}
if (index > -1) {
this.dataSet[index] = item
notifyItemChanged(index)
}
} }
return@filter (matchedIndex < 0)
} }
//At the second stage we are inserting new received elements into set.
if (filteredDataSet.size == 0)
return
this.dataSet.addAll(0, filteredDataSet)
val tmp = this.dataSet.sortedWith(Comparator { t, t2 -> t.message.timestamp.compareTo(t2.message.timestamp) }).reversed()
this.dataSet.clear()
this.dataSet.addAll(tmp)
notifyDataSetChanged()
} }
fun updateItem(message: BaseUiModel<*>) { fun updateItem(message: BaseUiModel<*>) {
......
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