From 4755199d7f4d5fbbb81dabfc822ccc0fbaf92a14 Mon Sep 17 00:00:00 2001 From: Satindar Dhillon Date: Thu, 16 Feb 2023 13:56:00 -0800 Subject: [PATCH] update filter in library view model when user changes it --- .../omnivore/ui/library/LibraryFilterBar.kt | 7 +++-- .../omnivore/ui/library/LibraryViewModel.kt | 8 ++++++ .../omnivore/ui/library/SavedItemFilter.kt | 27 +++++++------------ 3 files changed, 22 insertions(+), 20 deletions(-) diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/library/LibraryFilterBar.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/library/LibraryFilterBar.kt index e447f426a..c84db7da3 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/library/LibraryFilterBar.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/library/LibraryFilterBar.kt @@ -6,6 +6,7 @@ import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.ArrowDropDown import androidx.compose.material3.* import androidx.compose.runtime.* +import androidx.compose.runtime.livedata.observeAsState import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp @@ -14,6 +15,8 @@ import androidx.compose.ui.unit.dp @Composable fun LibraryFilterBar(viewModel: LibraryViewModel) { var isSavedItemFilterMenuExpanded by remember { mutableStateOf(false) } + val activeSavedItemFilter: SavedItemFilter by viewModel.appliedFilterLiveData.observeAsState(SavedItemFilter.INBOX) + Column { Row( horizontalArrangement = Arrangement.Start, @@ -23,7 +26,7 @@ fun LibraryFilterBar(viewModel: LibraryViewModel) { ) { AssistChip( onClick = { isSavedItemFilterMenuExpanded = true }, - label = { Text("Inbox") }, + label = { Text(activeSavedItemFilter.displayText) }, trailingIcon = { Icon( Icons.Default.ArrowDropDown, @@ -48,7 +51,7 @@ fun LibraryFilterBar(viewModel: LibraryViewModel) { SavedItemFilterContextMenu( isExpanded = isSavedItemFilterMenuExpanded, onDismiss = { isSavedItemFilterMenuExpanded = false }, - actionHandler = { it -> Log.d("ss", "$it")} + actionHandler = { viewModel.updateSavedItemFilter(it) } ) } } diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/library/LibraryViewModel.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/library/LibraryViewModel.kt index a4fe9429e..d8facaa37 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/library/LibraryViewModel.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/library/LibraryViewModel.kt @@ -89,6 +89,14 @@ class LibraryViewModel @Inject constructor( } } + fun updateSavedItemFilter(filter: SavedItemFilter) { + viewModelScope.launch { + datastoreRepo.putString(DatastoreKeys.lastUsedSavedItemFilter, filter.rawValue) + appliedFilterLiveData.postValue(filter) + // TODO: update Room query + } + } + private suspend fun syncItems() { val syncStart = Instant.now() val lastSyncDate = getLastSyncTime() ?: Instant.MIN diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/library/SavedItemFilter.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/library/SavedItemFilter.kt index b1453746e..b3f9b9094 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/library/SavedItemFilter.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/library/SavedItemFilter.kt @@ -1,11 +1,7 @@ package app.omnivore.omnivore.ui.library -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.outlined.Delete -import androidx.compose.material.icons.outlined.List import androidx.compose.material3.DropdownMenu import androidx.compose.material3.DropdownMenuItem -import androidx.compose.material3.Icon import androidx.compose.material3.Text import androidx.compose.runtime.Composable @@ -30,19 +26,14 @@ fun SavedItemFilterContextMenu( expanded = isExpanded, onDismissRequest = onDismiss ) { - DropdownMenuItem( - text = { Text("One") }, - onClick = { - actionHandler(SavedItemFilter.INBOX) - onDismiss() - } - ) - DropdownMenuItem( - text = { Text("Two") }, - onClick = { - actionHandler(SavedItemFilter.INBOX) - onDismiss() - } - ) + SavedItemFilter.values().forEach { + DropdownMenuItem( + text = { Text(it.displayText) }, + onClick = { + actionHandler(it) + onDismiss() + } + ) + } } }