From 898d2b437bf3a1bbd750af53adb669dbe9fcedbc Mon Sep 17 00:00:00 2001
From: Ryan Harg <ryan.harg@mailbox.org>
Date: Fri, 10 Sep 2021 09:44:36 +0200
Subject: [PATCH] #95: Remember scroll positions in list views

---
 .../main/java/audio/funkwhale/ffa/adapters/AlbumsAdapter.kt   | 4 ++++
 .../main/java/audio/funkwhale/ffa/adapters/ArtistsAdapter.kt  | 2 ++
 .../java/audio/funkwhale/ffa/adapters/FavoritesAdapter.kt     | 4 ++++
 .../java/audio/funkwhale/ffa/adapters/PlaylistsAdapter.kt     | 4 ++++
 .../main/java/audio/funkwhale/ffa/adapters/RadiosAdapter.kt   | 4 ++++
 .../main/java/audio/funkwhale/ffa/adapters/TracksAdapter.kt   | 4 ++++
 changes/changelog.d/95.bugfix                                 | 1 +
 7 files changed, 23 insertions(+)
 create mode 100644 changes/changelog.d/95.bugfix

diff --git a/app/src/main/java/audio/funkwhale/ffa/adapters/AlbumsAdapter.kt b/app/src/main/java/audio/funkwhale/ffa/adapters/AlbumsAdapter.kt
index 839f7706..03e2c92f 100644
--- a/app/src/main/java/audio/funkwhale/ffa/adapters/AlbumsAdapter.kt
+++ b/app/src/main/java/audio/funkwhale/ffa/adapters/AlbumsAdapter.kt
@@ -19,6 +19,10 @@ class AlbumsAdapter(
   private val listener: OnAlbumClickListener
 ) : FFAAdapter<Album, AlbumsAdapter.ViewHolder>() {
 
+  init {
+    this.stateRestorationPolicy = StateRestorationPolicy.PREVENT_WHEN_EMPTY
+  }
+
   interface OnAlbumClickListener {
     fun onClick(view: View?, album: Album)
   }
diff --git a/app/src/main/java/audio/funkwhale/ffa/adapters/ArtistsAdapter.kt b/app/src/main/java/audio/funkwhale/ffa/adapters/ArtistsAdapter.kt
index afdfe42b..956860db 100644
--- a/app/src/main/java/audio/funkwhale/ffa/adapters/ArtistsAdapter.kt
+++ b/app/src/main/java/audio/funkwhale/ffa/adapters/ArtistsAdapter.kt
@@ -42,6 +42,8 @@ class ArtistsAdapter(
         super.onItemRangeInserted(positionStart, itemCount)
       }
     })
+
+    this.stateRestorationPolicy = StateRestorationPolicy.PREVENT_WHEN_EMPTY
   }
 
   override fun getItemCount() = active.size
diff --git a/app/src/main/java/audio/funkwhale/ffa/adapters/FavoritesAdapter.kt b/app/src/main/java/audio/funkwhale/ffa/adapters/FavoritesAdapter.kt
index 66ea97a1..95fe68ab 100644
--- a/app/src/main/java/audio/funkwhale/ffa/adapters/FavoritesAdapter.kt
+++ b/app/src/main/java/audio/funkwhale/ffa/adapters/FavoritesAdapter.kt
@@ -30,6 +30,10 @@ class FavoritesAdapter(
   val fromQueue: Boolean = false
 ) : FFAAdapter<Track, FavoritesAdapter.ViewHolder>() {
 
+  init {
+    this.stateRestorationPolicy = StateRestorationPolicy.PREVENT_WHEN_EMPTY
+  }
+
   interface OnFavoriteListener {
     fun onToggleFavorite(id: Int, state: Boolean)
   }
diff --git a/app/src/main/java/audio/funkwhale/ffa/adapters/PlaylistsAdapter.kt b/app/src/main/java/audio/funkwhale/ffa/adapters/PlaylistsAdapter.kt
index b6b29d51..11e3cd81 100644
--- a/app/src/main/java/audio/funkwhale/ffa/adapters/PlaylistsAdapter.kt
+++ b/app/src/main/java/audio/funkwhale/ffa/adapters/PlaylistsAdapter.kt
@@ -20,6 +20,10 @@ class PlaylistsAdapter(
   private val listener: OnPlaylistClickListener
 ) : FFAAdapter<Playlist, PlaylistsAdapter.ViewHolder>() {
 
+  init {
+    this.stateRestorationPolicy = StateRestorationPolicy.PREVENT_WHEN_EMPTY
+  }
+
   interface OnPlaylistClickListener {
     fun onClick(holder: View?, playlist: Playlist)
   }
diff --git a/app/src/main/java/audio/funkwhale/ffa/adapters/RadiosAdapter.kt b/app/src/main/java/audio/funkwhale/ffa/adapters/RadiosAdapter.kt
index 8d57fa2a..cb9dbf91 100644
--- a/app/src/main/java/audio/funkwhale/ffa/adapters/RadiosAdapter.kt
+++ b/app/src/main/java/audio/funkwhale/ffa/adapters/RadiosAdapter.kt
@@ -27,6 +27,10 @@ class RadiosAdapter(
   private val listener: OnRadioClickListener
 ) : FFAAdapter<Radio, RadiosAdapter.ViewHolder>() {
 
+  init {
+    this.stateRestorationPolicy = StateRestorationPolicy.PREVENT_WHEN_EMPTY
+  }
+
   interface OnRadioClickListener {
     fun onClick(holder: RowRadioViewHolder, radio: Radio)
   }
diff --git a/app/src/main/java/audio/funkwhale/ffa/adapters/TracksAdapter.kt b/app/src/main/java/audio/funkwhale/ffa/adapters/TracksAdapter.kt
index 049df34d..499e7996 100644
--- a/app/src/main/java/audio/funkwhale/ffa/adapters/TracksAdapter.kt
+++ b/app/src/main/java/audio/funkwhale/ffa/adapters/TracksAdapter.kt
@@ -35,6 +35,10 @@ class TracksAdapter(
   val fromQueue: Boolean = false
 ) : FFAAdapter<Track, TracksAdapter.ViewHolder>() {
 
+  init {
+    this.stateRestorationPolicy = StateRestorationPolicy.PREVENT_WHEN_EMPTY
+  }
+
   interface OnFavoriteListener {
     fun onToggleFavorite(id: Int, state: Boolean)
   }
diff --git a/changes/changelog.d/95.bugfix b/changes/changelog.d/95.bugfix
new file mode 100644
index 00000000..fda08e77
--- /dev/null
+++ b/changes/changelog.d/95.bugfix
@@ -0,0 +1 @@
+Remember scroll positions in list views (Artists/Albums/...) (#95)
\ No newline at end of file
-- 
GitLab