update filter in library view model when user changes it

This commit is contained in:
Satindar Dhillon
2023-02-16 13:56:00 -08:00
parent a7c927f65d
commit 4755199d7f
3 changed files with 22 additions and 20 deletions

View File

@ -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) }
)
}
}

View File

@ -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

View File

@ -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()
}
)
}
}
}