From a2e581bc913a5eee7bd72fb42e1b338814080636 Mon Sep 17 00:00:00 2001 From: Jarne Demeulemeester <32322857+jarnedemeulemeester@users.noreply.github.com> Date: Sat, 11 Feb 2023 10:41:28 +0100 Subject: [PATCH] fix: remember scroll position in LibraryFragment (#285) --- .../java/dev/jdtech/jellyfin/fragments/LibraryFragment.kt | 2 ++ .../java/dev/jdtech/jellyfin/viewmodels/LibraryViewModel.kt | 6 +++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/app/phone/src/main/java/dev/jdtech/jellyfin/fragments/LibraryFragment.kt b/app/phone/src/main/java/dev/jdtech/jellyfin/fragments/LibraryFragment.kt index dac20f81..4ec8fae9 100644 --- a/app/phone/src/main/java/dev/jdtech/jellyfin/fragments/LibraryFragment.kt +++ b/app/phone/src/main/java/dev/jdtech/jellyfin/fragments/LibraryFragment.kt @@ -150,6 +150,8 @@ class LibraryFragment : Fragment() { viewLifecycleOwner.lifecycleScope.launch { viewLifecycleOwner.repeatOnLifecycle(Lifecycle.State.STARTED) { + if (viewModel.itemsloaded) return@repeatOnLifecycle + // Sorting options val sortBy = SortBy.fromString(preferences.sortBy) val sortOrder = try { diff --git a/core/src/main/java/dev/jdtech/jellyfin/viewmodels/LibraryViewModel.kt b/core/src/main/java/dev/jdtech/jellyfin/viewmodels/LibraryViewModel.kt index a6c927e9..ce52bd90 100644 --- a/core/src/main/java/dev/jdtech/jellyfin/viewmodels/LibraryViewModel.kt +++ b/core/src/main/java/dev/jdtech/jellyfin/viewmodels/LibraryViewModel.kt @@ -3,6 +3,7 @@ package dev.jdtech.jellyfin.viewmodels import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import androidx.paging.PagingData +import androidx.paging.cachedIn import dagger.hilt.android.lifecycle.HiltViewModel import dev.jdtech.jellyfin.repository.JellyfinRepository import dev.jdtech.jellyfin.models.SortBy @@ -26,6 +27,8 @@ constructor( private val _uiState = MutableStateFlow(UiState.Loading) val uiState = _uiState.asStateFlow() + var itemsloaded = false + sealed class UiState { data class Normal(val items: Flow>) : UiState() object Loading : UiState() @@ -38,6 +41,7 @@ constructor( sortBy: SortBy = SortBy.defaultValue, sortOrder: SortOrder = SortOrder.ASCENDING ) { + itemsloaded = true Timber.d("$libraryType") val itemType = when (libraryType) { "movies" -> listOf(BaseItemKind.MOVIE) @@ -54,7 +58,7 @@ constructor( recursive = true, sortBy = sortBy, sortOrder = sortOrder - ) + ).cachedIn(viewModelScope) _uiState.emit(UiState.Normal(items)) } catch (e: Exception) { _uiState.emit(UiState.Error(e))