refactor: move node detail logs to shared ViewModel

This commit is contained in:
andrekir 2024-10-29 07:40:18 -03:00 committed by Andre K
parent e7b30597b7
commit b668a21b68
5 changed files with 57 additions and 49 deletions

View file

@ -34,8 +34,11 @@ import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.TextStyle
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.unit.dp
import androidx.hilt.navigation.compose.hiltViewModel
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import com.geeksville.mesh.R
import com.geeksville.mesh.TelemetryProtos.Telemetry
import com.geeksville.mesh.model.MetricsViewModel
import com.geeksville.mesh.ui.BatteryInfo
import com.geeksville.mesh.ui.components.CommonCharts.X_AXIS_SPACING
import com.geeksville.mesh.ui.components.CommonCharts.MS_PER_SEC
@ -56,8 +59,10 @@ private val LEGEND_DATA = listOf(
)
@Composable
fun DeviceMetricsScreen(telemetries: List<Telemetry>) {
fun DeviceMetricsScreen(
viewModel: MetricsViewModel = hiltViewModel(),
) {
val state by viewModel.state.collectAsStateWithLifecycle()
var displayInfoDialog by remember { mutableStateOf(false) }
Column {
@ -76,14 +81,14 @@ fun DeviceMetricsScreen(telemetries: List<Telemetry>) {
modifier = Modifier
.fillMaxWidth()
.fillMaxHeight(fraction = 0.33f),
telemetries.reversed(),
state.deviceMetrics.reversed(),
promptInfoDialog = { displayInfoDialog = true }
)
/* Device Metric Cards */
LazyColumn(
modifier = Modifier.fillMaxSize()
) {
items(telemetries) { telemetry -> DeviceMetricsCard(telemetry) }
items(state.deviceMetrics) { telemetry -> DeviceMetricsCard(telemetry) }
}
}
}

View file

@ -37,9 +37,12 @@ import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.TextStyle
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.unit.dp
import androidx.hilt.navigation.compose.hiltViewModel
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import com.geeksville.mesh.R
import com.geeksville.mesh.TelemetryProtos.Telemetry
import com.geeksville.mesh.copy
import com.geeksville.mesh.model.MetricsViewModel
import com.geeksville.mesh.ui.components.CommonCharts.X_AXIS_SPACING
import com.geeksville.mesh.ui.components.CommonCharts.MS_PER_SEC
import com.geeksville.mesh.ui.components.CommonCharts.TIME_FORMAT
@ -69,15 +72,19 @@ private val LEGEND_DATA = listOf(
)
@Composable
fun EnvironmentMetricsScreen(telemetries: List<Telemetry>, environmentDisplayFahrenheit: Boolean) {
fun EnvironmentMetricsScreen(
viewModel: MetricsViewModel = hiltViewModel(),
) {
val state by viewModel.state.collectAsStateWithLifecycle()
/* Convert Celsius to Fahrenheit */
@Suppress("MagicNumber")
fun celsiusToFahrenheit(celsius: Float): Float {
return (celsius * 1.8F) + 32
}
val processedTelemetries: List<Telemetry> = if (environmentDisplayFahrenheit) {
telemetries.map { telemetry ->
val processedTelemetries: List<Telemetry> = if (state.environmentDisplayFahrenheit) {
state.environmentMetrics.map { telemetry ->
val temperatureFahrenheit =
celsiusToFahrenheit(telemetry.environmentMetrics.temperature)
telemetry.copy {
@ -86,7 +93,7 @@ fun EnvironmentMetricsScreen(telemetries: List<Telemetry>, environmentDisplayFah
}
}
} else {
telemetries
state.environmentMetrics
}
var displayInfoDialog by remember { mutableStateOf(false) }
@ -117,7 +124,7 @@ fun EnvironmentMetricsScreen(telemetries: List<Telemetry>, environmentDisplayFah
items(processedTelemetries) { telemetry ->
EnvironmentMetricsCard(
telemetry,
environmentDisplayFahrenheit
state.environmentDisplayFahrenheit
)
}
}

View file

@ -36,8 +36,11 @@ import androidx.compose.ui.platform.LocalDensity
import androidx.compose.ui.text.TextStyle
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.unit.dp
import androidx.hilt.navigation.compose.hiltViewModel
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import com.geeksville.mesh.MeshProtos.MeshPacket
import com.geeksville.mesh.R
import com.geeksville.mesh.model.MetricsViewModel
import com.geeksville.mesh.ui.components.CommonCharts.MS_PER_SEC
import com.geeksville.mesh.ui.components.CommonCharts.LINE_LIMIT
import com.geeksville.mesh.ui.components.CommonCharts.TEXT_PAINT_ALPHA
@ -61,8 +64,10 @@ private val LEGEND_DATA = listOf(
)
@Composable
fun SignalMetricsScreen(meshPackets: List<MeshPacket>) {
fun SignalMetricsScreen(
viewModel: MetricsViewModel = hiltViewModel(),
) {
val state by viewModel.state.collectAsStateWithLifecycle()
var displayInfoDialog by remember { mutableStateOf(false) }
Column {
@ -81,14 +86,14 @@ fun SignalMetricsScreen(meshPackets: List<MeshPacket>) {
modifier = Modifier
.fillMaxWidth()
.fillMaxHeight(fraction = 0.33f),
meshPackets = meshPackets.reversed(),
meshPackets = state.signalMetrics.reversed(),
promptInfoDialog = { displayInfoDialog = true }
)
LazyColumn(
modifier = Modifier.fillMaxSize()
) {
items(meshPackets) { meshPacket -> SignalMetricsCard(meshPacket) }
items(state.signalMetrics) { meshPacket -> SignalMetricsCard(meshPacket) }
}
}
}