Added several tweaks to PassesDialog, RadiosDialog

This commit is contained in:
Arty Bishop committed 2025-12-27 15:01:46 +00:00
1 parent 68d814d996
commit ad0b611bcb
6 files changed
+186 -145

No files matched your search

@@ -23,7 +23,6 @@ import androidx.compose.material3.CircularProgressIndicator
import androidx.compose.material3.ElevatedButton import androidx.compose.material3.ElevatedButton
import androidx.compose.material3.ElevatedCard import androidx.compose.material3.ElevatedCard
import androidx.compose.material3.Icon import androidx.compose.material3.Icon
import androidx.compose.material3.LinearProgressIndicator
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text import androidx.compose.material3.Text
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
@@ -45,7 +44,6 @@ import com.rtbishop.look4sat.domain.predict.OrbitalData
import com.rtbishop.look4sat.domain.predict.OrbitalPass import com.rtbishop.look4sat.domain.predict.OrbitalPass
import com.rtbishop.look4sat.presentation.MainTheme import com.rtbishop.look4sat.presentation.MainTheme
import java.text.SimpleDateFormat import java.text.SimpleDateFormat
import java.util.Date
import java.util.Locale import java.util.Locale
private val sdf = SimpleDateFormat("HH:mm:ss", Locale.ENGLISH) private val sdf = SimpleDateFormat("HH:mm:ss", Locale.ENGLISH)
@@ -99,12 +97,13 @@ private fun NextPassRowPreview() = MainTheme {
@Composable @Composable
fun NextPassRow(pass: OrbitalPass) { fun NextPassRow(pass: OrbitalPass) {
ElevatedCard { ElevatedCard(modifier = Modifier.height(48.dp)) {
Column( Column(
verticalArrangement = Arrangement.spacedBy(2.dp), verticalArrangement = Arrangement.spacedBy((-2).dp),
modifier = Modifier modifier = Modifier
.fillMaxSize()
.background(color = MaterialTheme.colorScheme.surface) .background(color = MaterialTheme.colorScheme.surface)
.padding(horizontal = 6.dp, vertical = 4.dp) .padding(start = 6.dp, top = 1.dp, end = 6.dp, bottom = 0.dp)
) { ) {
Row(verticalAlignment = Alignment.CenterVertically) { Row(verticalAlignment = Alignment.CenterVertically) {
Text( Text(
@@ -158,22 +157,6 @@ fun NextPassRow(pass: OrbitalPass) {
modifier = Modifier.weight(1f) modifier = Modifier.weight(1f)
) )
} }
Row(
verticalAlignment = Alignment.CenterVertically,
horizontalArrangement = Arrangement.SpaceBetween,
modifier = Modifier.fillMaxWidth()
) {
val defaultTime = " - - : - - "
Text(text = if (pass.isDeepSpace) defaultTime else sdf.format(Date(pass.aosTime)), fontSize = 15.sp)
LinearProgressIndicator(
progress = { if (pass.isDeepSpace) 100f else pass.progress },
modifier = Modifier
.fillMaxWidth(0.75f)
.padding(top = 2.dp),
trackColor = MaterialTheme.colorScheme.inverseSurface
)
Text(text = if (pass.isDeepSpace) defaultTime else sdf.format(Date(pass.losTime)), fontSize = 15.sp)
}
} }
} }
} }
@@ -9,7 +9,6 @@ import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.lazy.grid.GridCells import androidx.compose.foundation.lazy.grid.GridCells
import androidx.compose.foundation.lazy.grid.LazyVerticalGrid import androidx.compose.foundation.lazy.grid.LazyVerticalGrid
import androidx.compose.foundation.lazy.grid.itemsIndexed import androidx.compose.foundation.lazy.grid.itemsIndexed
import androidx.compose.material3.BottomSheetDefaults
import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.HorizontalDivider
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
@@ -39,11 +38,10 @@ fun TypesDialog(items: List<String>, selected: String, dismiss: () -> Unit, sele
ModalBottomSheet( ModalBottomSheet(
onDismissRequest = { dismiss() }, onDismissRequest = { dismiss() },
sheetState = rememberModalBottomSheetState(skipPartiallyExpanded = true), sheetState = rememberModalBottomSheetState(skipPartiallyExpanded = true),
dragHandle = { BottomSheetDefaults.DragHandle() },
modifier = Modifier.fillMaxHeight(0.80f) modifier = Modifier.fillMaxHeight(0.80f)
) { ) {
LazyVerticalGrid( LazyVerticalGrid(
columns = GridCells.Adaptive(240.dp), columns = GridCells.Fixed(1),
modifier = Modifier.background(MaterialTheme.colorScheme.background), modifier = Modifier.background(MaterialTheme.colorScheme.background),
horizontalArrangement = Arrangement.spacedBy(1.dp), horizontalArrangement = Arrangement.spacedBy(1.dp),
verticalArrangement = Arrangement.spacedBy(1.dp) verticalArrangement = Arrangement.spacedBy(1.dp)
@@ -22,21 +22,26 @@ import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxHeight import androidx.compose.foundation.layout.fillMaxHeight
import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.size
import androidx.compose.foundation.lazy.grid.GridCells import androidx.compose.foundation.lazy.grid.GridCells
import androidx.compose.foundation.lazy.grid.LazyVerticalGrid import androidx.compose.foundation.lazy.grid.LazyVerticalGrid
import androidx.compose.foundation.lazy.grid.itemsIndexed import androidx.compose.foundation.lazy.grid.itemsIndexed
import androidx.compose.material3.Checkbox import androidx.compose.material3.Checkbox
import androidx.compose.material3.ElevatedCard import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.HorizontalDivider
import androidx.compose.material3.Icon import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.ModalBottomSheet
import androidx.compose.material3.Slider import androidx.compose.material3.Slider
import androidx.compose.material3.SliderDefaults import androidx.compose.material3.SliderDefaults
import androidx.compose.material3.Surface import androidx.compose.material3.Surface
import androidx.compose.material3.Text import androidx.compose.material3.Text
import androidx.compose.material3.rememberModalBottomSheetState
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.mutableIntStateOf import androidx.compose.runtime.mutableIntStateOf
import androidx.compose.runtime.mutableStateListOf import androidx.compose.runtime.mutableStateListOf
@@ -50,7 +55,6 @@ import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp import androidx.compose.ui.unit.sp
import androidx.compose.ui.window.Dialog
import com.rtbishop.look4sat.R import com.rtbishop.look4sat.R
import com.rtbishop.look4sat.presentation.MainTheme import com.rtbishop.look4sat.presentation.MainTheme
import com.rtbishop.look4sat.presentation.components.CardButton import com.rtbishop.look4sat.presentation.components.CardButton
@@ -65,122 +69,161 @@ private val allModes = listOf(
@Preview(showBackground = true) @Preview(showBackground = true)
@Composable @Composable
private fun FilterDialogPreview() { private fun PassesDialogPreview() {
MainTheme { FilterDialog(24, 16.0, emptyList(), {}) { _, _, _ -> } } MainTheme { PassesDialog(24, 16.0, {}) { _, _ -> } }
} }
@OptIn(ExperimentalMaterial3Api::class)
@Composable @Composable
fun FilterDialog( fun PassesDialog(hours: Int, elev: Double, dismiss: () -> Unit, save: (Int, Double) -> Unit) {
hours: Int, val maxWidthModifier = Modifier.fillMaxWidth()
elev: Double,
modes: List<String>,
dismiss: () -> Unit,
save: (Int, Double, List<String>) -> Unit
) {
val maxWidthModifier = Modifier.fillMaxWidth(1f)
val hoursValue = remember { mutableIntStateOf(hours) } val hoursValue = remember { mutableIntStateOf(hours) }
val elevationValue = remember { mutableIntStateOf(elev.toInt()) } val elevationValue = remember { mutableIntStateOf(elev.toInt()) }
ModalBottomSheet(onDismissRequest = { dismiss() }) {
Column(
horizontalAlignment = Alignment.CenterHorizontally,
verticalArrangement = Arrangement.spacedBy(6.dp),
modifier = maxWidthModifier.padding(start = 16.dp, top = 0.dp, end = 16.dp, bottom = 32.dp)
) {
Row(
horizontalArrangement = Arrangement.SpaceBetween,
verticalAlignment = Alignment.CenterVertically,
modifier = maxWidthModifier
) {
CardButton(onClick = { dismiss() }, text = stringResource(id = R.string.btn_cancel))
Text(text = "Passes", fontSize = 18.sp, color = MaterialTheme.colorScheme.primary)
CardButton(
onClick = {
save(hoursValue.intValue, elevationValue.intValue.toDouble())
dismiss()
}, text = stringResource(id = R.string.btn_accept)
)
}
Spacer(modifier = Modifier.height(8.dp))
Row(horizontalArrangement = Arrangement.spacedBy(4.dp), verticalAlignment = Alignment.Bottom) {
Text(text = "Show passes above", fontSize = 16.sp, modifier = Modifier.weight(1f))
Icon(
painter = painterResource(id = R.drawable.ic_elevation),
contentDescription = null,
tint = MaterialTheme.colorScheme.primary,
modifier = Modifier
.size(20.dp)
.padding(bottom = 4.dp)
)
Text(
text = "${elevationValue.intValue}°",
fontSize = 18.sp,
fontWeight = FontWeight.Medium,
color = MaterialTheme.colorScheme.primary
)
}
Slider(
value = elevationValue.intValue.toFloat(),
onValueChange = { elevationValue.intValue = it.toInt() },
valueRange = 0f..60f,
colors = SliderDefaults.colors(inactiveTrackColor = MaterialTheme.colorScheme.onSurfaceVariant)
)
Spacer(modifier = Modifier.height(8.dp))
Row(horizontalArrangement = Arrangement.spacedBy(4.dp), verticalAlignment = Alignment.Bottom) {
Text(text = "Show passes within", fontSize = 16.sp, modifier = Modifier.weight(1f))
Icon(
painter = painterResource(id = R.drawable.ic_time),
contentDescription = null,
tint = MaterialTheme.colorScheme.primary,
modifier = Modifier
.size(20.dp)
.padding(bottom = 4.dp)
)
Text(
text = "${hoursValue.intValue}h",
fontSize = 18.sp,
fontWeight = FontWeight.Medium,
color = MaterialTheme.colorScheme.primary
)
}
Slider(
value = hoursValue.intValue.toFloat(),
onValueChange = { hoursValue.intValue = it.toInt() },
valueRange = 1f..96f,
colors = SliderDefaults.colors(inactiveTrackColor = MaterialTheme.colorScheme.onSurfaceVariant)
)
}
}
}
@Preview(showBackground = true)
@Composable
private fun RadiosDialogPreview() {
MainTheme { RadiosDialog(emptyList(), {}) { _ -> } }
}
@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun RadiosDialog(modes: List<String>, dismiss: () -> Unit, save: (List<String>) -> Unit) {
val maxWidthModifier = Modifier.fillMaxWidth(1f)
val selected = remember { mutableStateListOf<String>().apply { addAll(modes) } } val selected = remember { mutableStateListOf<String>().apply { addAll(modes) } }
val select = { mode: String -> if (selected.contains(mode)) selected.remove(mode) else selected.add(mode) } val select = { mode: String -> if (selected.contains(mode)) selected.remove(mode) else selected.add(mode) }
Dialog(onDismissRequest = { dismiss() }) { ModalBottomSheet(
ElevatedCard(modifier = Modifier.fillMaxHeight(0.80f)) { onDismissRequest = { dismiss() },
Column( sheetState = rememberModalBottomSheetState(skipPartiallyExpanded = true),
horizontalAlignment = Alignment.CenterHorizontally, modifier = Modifier.fillMaxHeight(0.80f)
verticalArrangement = Arrangement.spacedBy(6.dp), ) {
modifier = maxWidthModifier.padding(12.dp) Column(
horizontalAlignment = Alignment.CenterHorizontally,
verticalArrangement = Arrangement.spacedBy(6.dp),
modifier = maxWidthModifier.padding(horizontal = 12.dp)
) {
Row(
horizontalArrangement = Arrangement.SpaceBetween,
verticalAlignment = Alignment.CenterVertically,
modifier = maxWidthModifier
) { ) {
Text(text = "Filter passes", fontSize = 18.sp, color = MaterialTheme.colorScheme.primary) CardButton(onClick = { dismiss() }, text = stringResource(id = R.string.btn_cancel))
Row(horizontalArrangement = Arrangement.spacedBy(4.dp), verticalAlignment = Alignment.Bottom) { Text(text = "Radios", fontSize = 18.sp, color = MaterialTheme.colorScheme.primary)
Text(text = "Show passes within", fontSize = 16.sp, modifier = Modifier.weight(1f)) CardButton(
Icon( onClick = {
painter = painterResource(id = R.drawable.ic_time), save(selected.toList())
contentDescription = null, dismiss()
tint = MaterialTheme.colorScheme.primary, }, text = stringResource(id = R.string.btn_accept)
modifier = Modifier
.size(20.dp)
.padding(bottom = 4.dp)
)
Text(
text = "${hoursValue.intValue}h",
fontSize = 18.sp,
fontWeight = FontWeight.Medium,
color = MaterialTheme.colorScheme.primary
)
}
Slider(
value = hoursValue.intValue.toFloat(),
onValueChange = { hoursValue.intValue = it.toInt() },
valueRange = 1f..96f,
colors = SliderDefaults.colors(inactiveTrackColor = MaterialTheme.colorScheme.onSurfaceVariant)
) )
Row(horizontalArrangement = Arrangement.spacedBy(4.dp), verticalAlignment = Alignment.Bottom) { }
Text(text = "Show passes above", fontSize = 16.sp, modifier = Modifier.weight(1f)) LazyVerticalGrid(
Icon( columns = GridCells.Fixed(1),
painter = painterResource(id = R.drawable.ic_elevation), modifier = Modifier
contentDescription = null, .background(MaterialTheme.colorScheme.background)
tint = MaterialTheme.colorScheme.primary, .weight(1f),
modifier = Modifier horizontalArrangement = Arrangement.spacedBy(1.dp),
.size(20.dp) verticalArrangement = Arrangement.spacedBy(1.dp)
.padding(bottom = 4.dp) ) {
) item { HorizontalDivider(thickness = 0.dp, color = MaterialTheme.colorScheme.surface) }
Text( itemsIndexed(allModes) { index, item ->
text = "${elevationValue.intValue}°", Surface {
fontSize = 18.sp, Row(verticalAlignment = Alignment.CenterVertically,
fontWeight = FontWeight.Medium, modifier = Modifier
color = MaterialTheme.colorScheme.primary .background(MaterialTheme.colorScheme.surface)
) .clickable { select(item) }) {
} Text(
Slider( text = "$index).",
value = elevationValue.intValue.toFloat(), modifier = Modifier.padding(start = 8.dp, end = 6.dp),
onValueChange = { elevationValue.intValue = it.toInt() }, fontWeight = FontWeight.Normal,
valueRange = 0f..60f, color = MaterialTheme.colorScheme.secondary
colors = SliderDefaults.colors(inactiveTrackColor = MaterialTheme.colorScheme.onSurfaceVariant) )
) Text(
LazyVerticalGrid( text = item,
columns = GridCells.Adaptive(160.dp), modifier = Modifier.weight(1f),
modifier = Modifier fontWeight = FontWeight.Medium,
.background(MaterialTheme.colorScheme.background) maxLines = 1,
.weight(1f), overflow = TextOverflow.Ellipsis
horizontalArrangement = Arrangement.spacedBy(1.dp), )
verticalArrangement = Arrangement.spacedBy(1.dp) Checkbox(
) { checked = selected.contains(item),
itemsIndexed(allModes) { index, item -> onCheckedChange = null,
Surface { modifier = Modifier.padding(8.dp)
Row(verticalAlignment = Alignment.CenterVertically, )
modifier = Modifier
.background(MaterialTheme.colorScheme.surface)
.clickable { select(item) }) {
Text(
text = "$index).",
modifier = Modifier.padding(start = 8.dp, end = 6.dp),
fontWeight = FontWeight.Normal,
color = MaterialTheme.colorScheme.secondary
)
Text(
text = item,
modifier = Modifier.weight(1f),
fontWeight = FontWeight.Medium,
maxLines = 1,
overflow = TextOverflow.Ellipsis
)
Checkbox(
checked = selected.contains(item),
onCheckedChange = null,
modifier = Modifier.padding(8.dp)
)
}
} }
} }
} }
Row(horizontalArrangement = Arrangement.SpaceBetween, modifier = Modifier.fillMaxWidth()) { item { HorizontalDivider(thickness = 24.dp, color = MaterialTheme.colorScheme.surface) }
CardButton(onClick = { dismiss() }, text = stringResource(id = R.string.btn_cancel))
CardButton(
onClick = {
save(hoursValue.intValue, elevationValue.intValue.toDouble(), selected)
dismiss()
}, text = stringResource(id = R.string.btn_accept)
)
}
} }
} }
} }
@@ -55,17 +55,23 @@ private val sdf = SimpleDateFormat("HH:mm:ss", Locale.ENGLISH)
fun PassesScreen(uiState: PassesState, navToRadar: (Int, Long) -> Unit) { fun PassesScreen(uiState: PassesState, navToRadar: (Int, Long) -> Unit) {
val refreshPasses = { uiState.takeAction(PassesAction.RefreshPasses) } val refreshPasses = { uiState.takeAction(PassesAction.RefreshPasses) }
val refreshState = rememberPullRefreshState(refreshing = uiState.isRefreshing, onRefresh = refreshPasses) val refreshState = rememberPullRefreshState(refreshing = uiState.isRefreshing, onRefresh = refreshPasses)
val toggleDialog = { uiState.takeAction(PassesAction.ToggleFilterDialog) } val showPassesDialog = { uiState.takeAction(PassesAction.TogglePassesDialog) }
if (uiState.isDialogShown) { val showRadiosDialog = { uiState.takeAction(PassesAction.ToggleRadiosDialog) }
FilterDialog(uiState.hours, uiState.elevation, uiState.modes, toggleDialog) { hours, elevation, modes -> if (uiState.isPassesDialogShown) {
uiState.takeAction(PassesAction.ApplyFilter(hours, elevation, modes)) PassesDialog(hours = uiState.hours, elev = uiState.elevation, dismiss = showPassesDialog) { hours, elevation ->
uiState.takeAction(PassesAction.FilterPasses(hours, elevation))
}
}
if (uiState.isRadiosDialogShown) {
RadiosDialog(modes = uiState.modes, dismiss = showRadiosDialog) { modes ->
uiState.takeAction(PassesAction.FilterRadios(modes))
} }
} }
Column(modifier = Modifier.padding(6.dp), verticalArrangement = Arrangement.spacedBy(6.dp)) { Column(modifier = Modifier.padding(6.dp), verticalArrangement = Arrangement.spacedBy(6.dp)) {
TimerRow { TimerRow {
CardIcon(onClick = { toggleDialog() }, iconId = R.drawable.ic_filter) CardIcon(onClick = { showPassesDialog() }, iconId = R.drawable.ic_filter)
TimerBar(timeString = uiState.nextTime, isTimeAos = uiState.isNextTimeAos) TimerBar(timeString = uiState.nextTime, isTimeAos = uiState.isNextTimeAos)
CardIcon(onClick = { toggleDialog() }, iconId = R.drawable.ic_satellite) CardIcon(onClick = { showRadiosDialog() }, iconId = R.drawable.ic_satellite)
} }
NextPassRow(pass = uiState.nextPass) NextPassRow(pass = uiState.nextPass)
PassesList(refreshState, uiState.isRefreshing, uiState.itemsList, navToRadar) PassesList(refreshState, uiState.isRefreshing, uiState.itemsList, navToRadar)
@@ -82,7 +88,7 @@ private fun PassesList(
) { ) {
val backgroundColor = MaterialTheme.colorScheme.primary val backgroundColor = MaterialTheme.colorScheme.primary
ElevatedCard(modifier = Modifier.fillMaxSize()) { ElevatedCard(modifier = Modifier.fillMaxSize()) {
Box(Modifier.pullRefresh(refreshState), contentAlignment = Alignment.TopCenter) { Box(modifier = Modifier.pullRefresh(refreshState), contentAlignment = Alignment.TopCenter) {
LazyColumn(modifier = Modifier.fillMaxSize()) { LazyColumn(modifier = Modifier.fillMaxSize()) {
items(items = passes, key = { item -> item.catNum + item.aosTime }) { pass -> items(items = passes, key = { item -> item.catNum + item.aosTime }) { pass ->
PassItem(pass = pass, navToRadar = navToRadar, modifier = Modifier.animateItemPlacement()) PassItem(pass = pass, navToRadar = navToRadar, modifier = Modifier.animateItemPlacement())
@@ -3,7 +3,8 @@ package com.rtbishop.look4sat.presentation.passes
import com.rtbishop.look4sat.domain.predict.OrbitalPass import com.rtbishop.look4sat.domain.predict.OrbitalPass
data class PassesState( data class PassesState(
val isDialogShown: Boolean, val isPassesDialogShown: Boolean,
val isRadiosDialogShown: Boolean,
val isRefreshing: Boolean, val isRefreshing: Boolean,
val isUtc: Boolean, val isUtc: Boolean,
val nextPass: OrbitalPass, val nextPass: OrbitalPass,
@@ -17,7 +18,9 @@ data class PassesState(
) )
sealed class PassesAction { sealed class PassesAction {
data class ApplyFilter(val hoursAhead: Int, val minElevation: Double, val modes: List<String>) : PassesAction() data class FilterPasses(val hoursAhead: Int, val minElevation: Double) : PassesAction()
data class FilterRadios(val modes: List<String>) : PassesAction()
data object RefreshPasses : PassesAction() data object RefreshPasses : PassesAction()
data object ToggleFilterDialog : PassesAction() data object TogglePassesDialog : PassesAction()
data object ToggleRadiosDialog : PassesAction()
} }
@@ -43,7 +43,8 @@ class PassesViewModel(
private val _uiState = mutableStateOf( private val _uiState = mutableStateOf(
PassesState( PassesState(
isDialogShown = false, isPassesDialogShown = false,
isRadiosDialogShown = false,
isRefreshing = true, isRefreshing = true,
isUtc = settingsRepo.otherSettings.value.stateOfUtc, isUtc = settingsRepo.otherSettings.value.stateOfUtc,
nextTime = "00:00:00", nextTime = "00:00:00",
@@ -78,9 +79,11 @@ class PassesViewModel(
private fun handleAction(action: PassesAction) { private fun handleAction(action: PassesAction) {
when (action) { when (action) {
is PassesAction.ApplyFilter -> applyFilter(action.hoursAhead, action.minElevation, action.modes) is PassesAction.FilterPasses -> applyFilter(action.hoursAhead, action.minElevation, uiState.value.modes)
is PassesAction.FilterRadios -> applyFilter(uiState.value.hours, uiState.value.elevation, action.modes)
PassesAction.RefreshPasses -> refreshPasses() PassesAction.RefreshPasses -> refreshPasses()
PassesAction.ToggleFilterDialog -> toggleFilterDialog() PassesAction.TogglePassesDialog -> toggleFilterDialog()
PassesAction.ToggleRadiosDialog -> toggleRadiosDialog()
} }
} }
@@ -113,8 +116,13 @@ class PassesViewModel(
} }
private fun toggleFilterDialog() { private fun toggleFilterDialog() {
val currentDialogState = _uiState.value.isDialogShown val currentDialogState = _uiState.value.isPassesDialogShown
_uiState.value = _uiState.value.copy(isDialogShown = currentDialogState.not()) _uiState.value = _uiState.value.copy(isPassesDialogShown = currentDialogState.not())
}
private fun toggleRadiosDialog() {
val currentDialogState = _uiState.value.isRadiosDialogShown
_uiState.value = _uiState.value.copy(isRadiosDialogShown = currentDialogState.not())
} }
companion object { companion object {