From 6d8c45b5b7179a8c9593022f5623b8d06dcc8192 Mon Sep 17 00:00:00 2001
From: Janne Koschinski <janne@kuschku.de>
Date: Tue, 11 Dec 2018 13:39:43 +0100
Subject: [PATCH] Fixes #100

---
 .../quasseldroid/ui/chat/input/ChatlineFragment.kt  |  3 +++
 .../ui/chat/input/MessageHistoryAdapter.kt          | 13 +++++++++++--
 2 files changed, 14 insertions(+), 2 deletions(-)

diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/ChatlineFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/ChatlineFragment.kt
index 53d840014..af1d91712 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/ChatlineFragment.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/ChatlineFragment.kt
@@ -163,6 +163,9 @@ class ChatlineFragment : ServiceBoundFragment() {
     messageHistory.adapter = messageHistoryAdapter
     viewModel.recentlySentMessages.toLiveData()
       .observe(this, Observer(messageHistoryAdapter::submitList))
+    messageHistoryAdapter.setOnUpdateFinishedListener {
+      messageHistory.scrollToPosition(0)
+    }
 
     fun send() {
       if (chatline.safeText.isNotBlank()) {
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/MessageHistoryAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/MessageHistoryAdapter.kt
index 0f3527018..df87a54f0 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/MessageHistoryAdapter.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/MessageHistoryAdapter.kt
@@ -24,11 +24,11 @@ import android.view.View
 import android.view.ViewGroup
 import android.widget.TextView
 import androidx.recyclerview.widget.DiffUtil
-import androidx.recyclerview.widget.ListAdapter
 import androidx.recyclerview.widget.RecyclerView
 import butterknife.BindView
 import butterknife.ButterKnife
 import de.kuschku.quasseldroid.R
+import de.kuschku.quasseldroid.util.lists.ListAdapter
 
 class MessageHistoryAdapter : ListAdapter<CharSequence, MessageHistoryAdapter.MessageViewHolder>(
   object : DiffUtil.ItemCallback<CharSequence>() {
@@ -39,17 +39,26 @@ class MessageHistoryAdapter : ListAdapter<CharSequence, MessageHistoryAdapter.Me
       oldItem == newItem
   }) {
   private var clickListener: ((CharSequence) -> Unit)? = null
+  private var updateFinishedListener: (() -> Unit)? = null
 
-  fun setOnItemClickListener(listener: (CharSequence) -> Unit) {
+  fun setOnItemClickListener(listener: ((CharSequence) -> Unit)?) {
     this.clickListener = listener
   }
 
+  fun setOnUpdateFinishedListener(listener: (() -> Unit)?) {
+    this.updateFinishedListener = listener
+  }
+
   override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) =
     MessageViewHolder(
       LayoutInflater.from(parent.context).inflate(R.layout.widget_history_message, parent, false),
       clickListener = clickListener
     )
 
+  override fun onUpdateFinished(list: List<CharSequence>) {
+    updateFinishedListener?.invoke()
+  }
+
   override fun onBindViewHolder(holder: MessageViewHolder, position: Int) =
     holder.bind(getItem(position))
 
-- 
GitLab