diff --git a/app/src/fdroid/java/com/geeksville/mesh/ui/node/NodeMap.kt b/app/src/fdroid/java/com/geeksville/mesh/ui/node/NodeMapScreen.kt
similarity index 87%
rename from app/src/fdroid/java/com/geeksville/mesh/ui/node/NodeMap.kt
rename to app/src/fdroid/java/com/geeksville/mesh/ui/node/NodeMapScreen.kt
index 45820aa3a..39a0cdc2a 100644
--- a/app/src/fdroid/java/com/geeksville/mesh/ui/node/NodeMap.kt
+++ b/app/src/fdroid/java/com/geeksville/mesh/ui/node/NodeMapScreen.kt
@@ -28,7 +28,7 @@ import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import androidx.navigation.NavHostController
import com.geeksville.mesh.model.MetricsViewModel
-import com.geeksville.mesh.model.UIViewModel
+import com.geeksville.mesh.ui.map.NodeMapViewModel
import com.geeksville.mesh.ui.map.rememberMapViewWithLifecycle
import com.geeksville.mesh.util.addCopyright
import com.geeksville.mesh.util.addPolyline
@@ -42,14 +42,14 @@ private const val DEG_D = 1e-7
@Composable
fun NodeMapScreen(
navController: NavHostController,
- @Suppress("UNUSED_PARAMETER") uiViewModel: UIViewModel = hiltViewModel(),
- viewModel: MetricsViewModel = hiltViewModel(),
+ metricsViewModel: MetricsViewModel = hiltViewModel(),
+ nodeMapViewModel: NodeMapViewModel = hiltViewModel(),
) {
val density = LocalDensity.current
- val state by viewModel.state.collectAsStateWithLifecycle()
+ val state by metricsViewModel.state.collectAsStateWithLifecycle()
val geoPoints = state.positionLogs.map { GeoPoint(it.latitudeI * DEG_D, it.longitudeI * DEG_D) }
val cameraView = remember { BoundingBox.fromGeoPoints(geoPoints) }
- val mapView = rememberMapViewWithLifecycle(cameraView, viewModel.tileSource)
+ val mapView = rememberMapViewWithLifecycle(cameraView, metricsViewModel.tileSource)
AndroidView(
modifier = Modifier.fillMaxSize(),
diff --git a/app/src/google/java/com/geeksville/mesh/ui/node/NodeMap.kt b/app/src/google/java/com/geeksville/mesh/ui/node/NodeMapScreen.kt
similarity index 92%
rename from app/src/google/java/com/geeksville/mesh/ui/node/NodeMap.kt
rename to app/src/google/java/com/geeksville/mesh/ui/node/NodeMapScreen.kt
index fbcb47eae..f9dd1420b 100644
--- a/app/src/google/java/com/geeksville/mesh/ui/node/NodeMap.kt
+++ b/app/src/google/java/com/geeksville/mesh/ui/node/NodeMapScreen.kt
@@ -28,22 +28,22 @@ import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import androidx.navigation.NavHostController
import com.geeksville.mesh.model.MetricsViewModel
-import com.geeksville.mesh.model.UIViewModel
import com.geeksville.mesh.ui.common.components.MainAppBar
import com.geeksville.mesh.ui.map.MapView
+import com.geeksville.mesh.ui.map.NodeMapViewModel
const val DEG_D = 1e-7
@Composable
fun NodeMapScreen(
navController: NavHostController,
- uiViewModel: UIViewModel,
metricsViewModel: MetricsViewModel = hiltViewModel(),
+ nodeMapViewModel: NodeMapViewModel = hiltViewModel(),
) {
val state by metricsViewModel.state.collectAsState()
val positions = state.positionLogs
val destNum = state.node?.num
- val ourNodeInfo by uiViewModel.ourNodeInfo.collectAsStateWithLifecycle()
+ val ourNodeInfo by nodeMapViewModel.ourNodeInfo.collectAsStateWithLifecycle()
Scaffold(
topBar = {
diff --git a/app/src/main/java/com/geeksville/mesh/navigation/NodesNavigation.kt b/app/src/main/java/com/geeksville/mesh/navigation/NodesNavigation.kt
index 514845c7c..b05be2265 100644
--- a/app/src/main/java/com/geeksville/mesh/navigation/NodesNavigation.kt
+++ b/app/src/main/java/com/geeksville/mesh/navigation/NodesNavigation.kt
@@ -225,7 +225,7 @@ enum class NodeDetailRoute(
R.string.node_map,
NodeDetailRoutes.NodeMap,
Icons.Default.LocationOn,
- { navController, metricsVM, uiVM -> NodeMapScreen(navController, uiVM, metricsVM) },
+ { navController, metricsVM, _ -> NodeMapScreen(navController, metricsVM) },
),
POSITION_LOG(
R.string.position_log,
diff --git a/app/src/main/java/com/geeksville/mesh/ui/map/NodeMapViewModel.kt b/app/src/main/java/com/geeksville/mesh/ui/map/NodeMapViewModel.kt
new file mode 100644
index 000000000..20c36ffbe
--- /dev/null
+++ b/app/src/main/java/com/geeksville/mesh/ui/map/NodeMapViewModel.kt
@@ -0,0 +1,30 @@
+/*
+ * Copyright (c) 2025 Meshtastic LLC
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+package com.geeksville.mesh.ui.map
+
+import androidx.lifecycle.ViewModel
+import dagger.hilt.android.lifecycle.HiltViewModel
+import kotlinx.coroutines.flow.StateFlow
+import org.meshtastic.core.data.repository.NodeRepository
+import org.meshtastic.core.database.model.Node
+import javax.inject.Inject
+
+@HiltViewModel
+class NodeMapViewModel @Inject constructor(nodeRepository: NodeRepository) : ViewModel() {
+ val ourNodeInfo: StateFlow = nodeRepository.ourNodeInfo
+}