From aeab9e27a7ec0ec79350e91eb9409f3417ec9469 Mon Sep 17 00:00:00 2001
From: Janne Koschinski <janne@kuschku.de>
Date: Wed, 6 Jun 2018 19:28:16 +0200
Subject: [PATCH] Revert "Implement fast scroll for messages"

This reverts commit 452aa9b
---
 .../ui/chat/messages/MessageAdapter.kt            | 11 +----------
 .../ui/chat/messages/MessageListFragment.kt       | 15 +++++++++------
 app/src/main/res/layout/fragment_messages.xml     |  4 ++--
 .../quasseldroid/persistence/QuasselDatabase.kt   |  2 +-
 4 files changed, 13 insertions(+), 19 deletions(-)

diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/MessageAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/MessageAdapter.kt
index e7f13c555..2593a6037 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/MessageAdapter.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/MessageAdapter.kt
@@ -31,7 +31,6 @@ import android.widget.ImageView
 import android.widget.TextView
 import butterknife.BindView
 import butterknife.ButterKnife
-import com.simplecityapps.recyclerview_fastscroll.views.FastScrollRecyclerView
 import de.kuschku.libquassel.protocol.Message_Flag
 import de.kuschku.libquassel.protocol.Message_Type
 import de.kuschku.libquassel.util.flag.hasFlag
@@ -44,9 +43,6 @@ import de.kuschku.quasseldroid.util.helper.visibleIf
 import de.kuschku.quasseldroid.util.ui.BetterLinkMovementMethod
 import de.kuschku.quasseldroid.util.ui.DoubleClickHelper
 import de.kuschku.quasseldroid.viewmodel.data.FormattedMessage
-import org.threeten.bp.ZoneId
-import org.threeten.bp.format.DateTimeFormatter
-import org.threeten.bp.format.FormatStyle
 import javax.inject.Inject
 
 class MessageAdapter @Inject constructor(
@@ -58,12 +54,7 @@ class MessageAdapter @Inject constructor(
 
     override fun areContentsTheSame(oldItem: DisplayMessage, newItem: DisplayMessage) =
       oldItem == newItem
-  }), FastScrollRecyclerView.SectionedAdapter {
-  private val dateFormatter = DateTimeFormatter.ofLocalizedDate(FormatStyle.MEDIUM)
-
-  override fun getSectionName(position: Int) =
-    getItem(position)?.content?.time?.atZone(ZoneId.systemDefault())?.format(dateFormatter) ?: ""
-
+  }) {
   private val movementMethod = BetterLinkMovementMethod.newInstance()
   private var clickListener: ((FormattedMessage) -> Unit)? = null
   private var longClickListener: ((FormattedMessage) -> Unit)? = null
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/MessageListFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/MessageListFragment.kt
index 16ae92bc1..0bfa0ba75 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/MessageListFragment.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/MessageListFragment.kt
@@ -197,8 +197,10 @@ class MessageListFragment : ServiceBoundFragment() {
 
   private val boundaryCallback = object :
     PagedList.BoundaryCallback<DisplayMessage>() {
-    override fun onItemAtFrontLoaded(itemAtFront: DisplayMessage) = loadMore()
-    override fun onItemAtEndLoaded(itemAtEnd: DisplayMessage) = Unit
+    override fun onItemAtFrontLoaded(itemAtFront: DisplayMessage) = Unit
+    override fun onItemAtEndLoaded(itemAtEnd: DisplayMessage) {
+      loadMore()
+    }
   }
 
   override fun onCreateView(
@@ -209,6 +211,7 @@ class MessageListFragment : ServiceBoundFragment() {
     ButterKnife.bind(this, view)
 
     linearLayoutManager = LinearLayoutManager(context)
+    linearLayoutManager.reverseLayout = true
 
     backlogRequester = BacklogRequester(viewModel, database)
 
@@ -287,7 +290,7 @@ class MessageListFragment : ServiceBoundFragment() {
                         expanded: Set<MsgId>, markerLine: MsgId?): List<DisplayMessage> {
       var previous: QuasselDatabase.MessageData? = null
       var previousDate: ZonedDateTime? = null
-      return list.map {
+      return list.mapReverse {
         val date = it.time.atZone(ZoneId.systemDefault()).truncatedTo(ChronoUnit.DAYS)
         val isSameDay = previousDate?.isEqual(date) ?: false
         val isFollowUp = previous?.sender == it.sender && previous?.type == it.type && isSameDay
@@ -371,8 +374,8 @@ class MessageListFragment : ServiceBoundFragment() {
     })
 
     fun checkScroll() {
-      if (linearLayoutManager.findLastVisibleItemPosition() > linearLayoutManager.itemCount - 2 && !isScrolling) {
-        messageList.scrollToPosition(linearLayoutManager.itemCount - 1)
+      if (linearLayoutManager.findFirstVisibleItemPosition() < 2 && !isScrolling) {
+        messageList.scrollToPosition(0)
       }
     }
 
@@ -407,7 +410,7 @@ class MessageListFragment : ServiceBoundFragment() {
         fab.visibility = View.VISIBLE
       }
     })
-    scrollDown.setOnClickListener { messageList.scrollToPosition(linearLayoutManager.itemCount - 1) }
+    scrollDown.setOnClickListener { messageList.scrollToPosition(0) }
 
     savedInstanceState?.run {
       messageList.layoutManager.onRestoreInstanceState(getParcelable(KEY_STATE_LIST))
diff --git a/app/src/main/res/layout/fragment_messages.xml b/app/src/main/res/layout/fragment_messages.xml
index 3efb80076..93d165165 100644
--- a/app/src/main/res/layout/fragment_messages.xml
+++ b/app/src/main/res/layout/fragment_messages.xml
@@ -30,11 +30,11 @@
     android:layout_width="match_parent"
     android:layout_height="match_parent">
 
-    <com.simplecityapps.recyclerview_fastscroll.views.FastScrollRecyclerView
+    <android.support.v7.widget.RecyclerView
       android:id="@+id/messages"
-      style="@style/Widget.FastScroller"
       android:layout_width="match_parent"
       android:layout_height="match_parent"
+      android:scrollbars="vertical"
       app:stackFromEnd="true"
       tools:listitem="@layout/widget_chatmessage_plain" />
 
diff --git a/persistence/src/main/java/de/kuschku/quasseldroid/persistence/QuasselDatabase.kt b/persistence/src/main/java/de/kuschku/quasseldroid/persistence/QuasselDatabase.kt
index 6fc4a28b6..7a6433b8a 100644
--- a/persistence/src/main/java/de/kuschku/quasseldroid/persistence/QuasselDatabase.kt
+++ b/persistence/src/main/java/de/kuschku/quasseldroid/persistence/QuasselDatabase.kt
@@ -93,7 +93,7 @@ abstract class QuasselDatabase : RoomDatabase() {
     @Query("SELECT * FROM message WHERE bufferId = :bufferId ORDER BY messageId ASC")
     fun findByBufferId(bufferId: Int): List<MessageData>
 
-    @Query("SELECT * FROM message WHERE bufferId = :bufferId AND type & ~ :type > 0 AND ignored = 0 ORDER BY messageId ASC")
+    @Query("SELECT * FROM message WHERE bufferId = :bufferId AND type & ~ :type > 0 AND ignored = 0 ORDER BY messageId DESC")
     fun findByBufferIdPaged(bufferId: Int, type: Int): DataSource.Factory<Int, MessageData>
 
     @Query("SELECT * FROM message WHERE bufferId = :bufferId ORDER BY messageId DESC LIMIT 1")
-- 
GitLab