Skip to content

Commit

Permalink
Retain app filter and sort options via SavedState
Browse files Browse the repository at this point in the history
  • Loading branch information
d4rken committed Jul 20, 2022
1 parent 6b1d899 commit 910ede4
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 5 deletions.
16 changes: 13 additions & 3 deletions app/src/main/java/eu/darken/myperm/apps/ui/list/AppsFragmentVM.kt
Original file line number Diff line number Diff line change
Expand Up @@ -22,15 +22,23 @@ import javax.inject.Inject
@SuppressLint("StaticFieldLeak")
@HiltViewModel
class AppsFragmentVM @Inject constructor(
@Suppress("UNUSED_PARAMETER") handle: SavedStateHandle,
@Suppress("UNUSED_PARAMETER") private val handle: SavedStateHandle,
dispatcherProvider: DispatcherProvider,
@ApplicationContext private val context: Context,
packageRepo: AppRepo,
) : ViewModel3(dispatcherProvider = dispatcherProvider) {

private var ssFilterOptions: FilterOptions?
get() = handle[FilterOptions::class.simpleName!!]
set(value) = handle.set(FilterOptions::class.simpleName!!, value)

private var ssSortOptions: SortOptions?
get() = handle[SortOptions::class.simpleName!!]
set(value) = handle.set(SortOptions::class.simpleName!!, value)

private val searchTerm = MutableStateFlow<String?>(null)
private val filterOptions = MutableStateFlow(FilterOptions())
private val sortOptions = MutableStateFlow(SortOptions())
private val filterOptions = MutableStateFlow(ssFilterOptions ?: FilterOptions())
private val sortOptions = MutableStateFlow(ssSortOptions ?: SortOptions())

val events = SingleLiveEvent<AppsEvents>()

Expand Down Expand Up @@ -91,13 +99,15 @@ class AppsFragmentVM @Inject constructor(
val old = filterOptions.value
val new = action(old)
log { "updateFilterOptions($old) -> $new" }
ssFilterOptions = new
filterOptions.value = new
}

fun updateSortOptions(action: (SortOptions) -> SortOptions) {
val old = sortOptions.value
val new = action(old)
log { "updateFilterOptions($old) -> $new" }
ssSortOptions = new
sortOptions.value = new
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,16 +1,19 @@
package eu.darken.myperm.apps.ui.list

import android.os.Parcelable
import androidx.annotation.StringRes
import eu.darken.myperm.R
import eu.darken.myperm.apps.core.Pkg
import eu.darken.myperm.apps.core.container.SecondaryProfilePkg
import eu.darken.myperm.apps.core.features.HasInstallData
import eu.darken.myperm.apps.core.features.InternetAccess
import eu.darken.myperm.apps.core.known.AKnownPkg
import kotlinx.parcelize.Parcelize

@Parcelize
data class FilterOptions(
val keys: Set<Filter> = setOf(Filter.USER_APP)
) {
) : Parcelable {
enum class Filter(
@StringRes val labelRes: Int,
val matches: (Pkg) -> Boolean
Expand Down
Original file line number Diff line number Diff line change
@@ -1,18 +1,21 @@
package eu.darken.myperm.apps.ui.list

import android.content.Context
import android.os.Parcelable
import androidx.annotation.StringRes
import eu.darken.myperm.R
import eu.darken.myperm.apps.core.Pkg
import eu.darken.myperm.apps.core.features.HasApkData
import eu.darken.myperm.apps.core.features.HasInstallData
import eu.darken.myperm.apps.core.known.AKnownPkg
import kotlinx.parcelize.Parcelize
import java.time.Instant

@Parcelize
data class SortOptions(
val mainSort: Sort = Sort.UPDATED_AT,
val reversed: Boolean = false
) {
) : Parcelable {
enum class Sort(
@StringRes val labelRes: Int
) {
Expand Down

0 comments on commit 910ede4

Please sign in to comment.