diff --git a/feature/node/src/main/kotlin/org/meshtastic/feature/node/component/NodeFilterTextField.kt b/feature/node/src/main/kotlin/org/meshtastic/feature/node/component/NodeFilterTextField.kt index ec9e8fcef..9102be32e 100644 --- a/feature/node/src/main/kotlin/org/meshtastic/feature/node/component/NodeFilterTextField.kt +++ b/feature/node/src/main/kotlin/org/meshtastic/feature/node/component/NodeFilterTextField.kt @@ -75,30 +75,30 @@ import org.meshtastic.core.strings.node_filter_title import org.meshtastic.core.strings.node_sort_button import org.meshtastic.core.strings.node_sort_title import org.meshtastic.core.ui.theme.AppTheme +import org.meshtastic.feature.node.list.NodeFilterState @Suppress("LongParameterList") @Composable fun NodeFilterTextField( modifier: Modifier = Modifier, - filterText: String, + filterState: NodeFilterState, onTextChange: (String) -> Unit, currentSortOption: NodeSortOption, onSortSelect: (NodeSortOption) -> Unit, - includeUnknown: Boolean, onToggleIncludeUnknown: () -> Unit, - excludeInfrastructure: Boolean, onToggleExcludeInfrastructure: () -> Unit, - onlyOnline: Boolean, onToggleOnlyOnline: () -> Unit, - onlyDirect: Boolean, onToggleOnlyDirect: () -> Unit, - showIgnored: Boolean, onToggleShowIgnored: () -> Unit, ignoredNodeCount: Int, ) { Column(modifier = modifier.background(MaterialTheme.colorScheme.background)) { Row { - NodeFilterTextField(filterText = filterText, onTextChange = onTextChange, modifier = Modifier.weight(1f)) + NodeFilterTextField( + filterText = filterState.filterText, + onTextChange = onTextChange, + modifier = Modifier.weight(1f), + ) NodeSortButton( modifier = Modifier.align(Alignment.CenterVertically), @@ -106,21 +106,21 @@ fun NodeFilterTextField( onSortSelect = onSortSelect, toggles = NodeFilterToggles( - includeUnknown = includeUnknown, + includeUnknown = filterState.includeUnknown, onToggleIncludeUnknown = onToggleIncludeUnknown, - excludeInfrastructure = excludeInfrastructure, + excludeInfrastructure = filterState.excludeInfrastructure, onToggleExcludeInfrastructure = onToggleExcludeInfrastructure, - onlyOnline = onlyOnline, + onlyOnline = filterState.onlyOnline, onToggleOnlyOnline = onToggleOnlyOnline, - onlyDirect = onlyDirect, + onlyDirect = filterState.onlyDirect, onToggleOnlyDirect = onToggleOnlyDirect, - showIgnored = showIgnored, + showIgnored = filterState.showIgnored, onToggleShowIgnored = onToggleShowIgnored, ignoredNodeCount = ignoredNodeCount, ), ) } - if (showIgnored) { + if (filterState.showIgnored) { Box( modifier = Modifier.fillMaxWidth() @@ -303,19 +303,14 @@ private fun DropdownMenuCheck( private fun NodeFilterTextFieldPreview() { AppTheme { NodeFilterTextField( - filterText = "Filter text", + filterState = NodeFilterState(), onTextChange = {}, currentSortOption = NodeSortOption.LAST_HEARD, onSortSelect = {}, - includeUnknown = false, onToggleIncludeUnknown = {}, - excludeInfrastructure = false, onToggleExcludeInfrastructure = {}, - onlyOnline = false, onToggleOnlyOnline = {}, - onlyDirect = false, onToggleOnlyDirect = {}, - showIgnored = false, onToggleShowIgnored = {}, ignoredNodeCount = 0, ) diff --git a/feature/node/src/main/kotlin/org/meshtastic/feature/node/list/NodeListScreen.kt b/feature/node/src/main/kotlin/org/meshtastic/feature/node/list/NodeListScreen.kt index b8c188e9b..18b493173 100644 --- a/feature/node/src/main/kotlin/org/meshtastic/feature/node/list/NodeListScreen.kt +++ b/feature/node/src/main/kotlin/org/meshtastic/feature/node/list/NodeListScreen.kt @@ -153,21 +153,16 @@ fun NodeListScreen( .graphicsLayer(alpha = animatedAlpha) .background(MaterialTheme.colorScheme.surfaceDim) .padding(8.dp), - filterText = state.filter.filterText, + filterState = state.filter, onTextChange = { viewModel.setFilterText(it) }, currentSortOption = state.sort, onSortSelect = viewModel::setSortOption, - includeUnknown = state.filter.includeUnknown, onToggleIncludeUnknown = { viewModel.nodeFilterPreferences.toggleIncludeUnknown() }, - excludeInfrastructure = state.filter.excludeInfrastructure, onToggleExcludeInfrastructure = { viewModel.nodeFilterPreferences.toggleExcludeInfrastructure() }, - onlyOnline = state.filter.onlyOnline, onToggleOnlyOnline = { viewModel.nodeFilterPreferences.toggleOnlyOnline() }, - onlyDirect = state.filter.onlyDirect, onToggleOnlyDirect = { viewModel.nodeFilterPreferences.toggleOnlyDirect() }, - showIgnored = state.filter.showIgnored, onToggleShowIgnored = { viewModel.nodeFilterPreferences.toggleShowIgnored() }, ignoredNodeCount = state.ignoredNodeCount, )