Redundant methods in RadioConfigRepository (#3198)

This commit is contained in:
Phil Oliver 2025-09-25 09:57:26 -04:00 committed by GitHub
parent 8be9c38ae6
commit 8317b704ea
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
13 changed files with 97 additions and 171 deletions

View file

@ -23,6 +23,7 @@ import com.geeksville.mesh.LocalOnlyProtos.LocalConfig
import com.geeksville.mesh.database.NodeRepository
import com.geeksville.mesh.repository.bluetooth.BluetoothRepository
import com.geeksville.mesh.repository.datastore.RadioConfigRepository
import com.geeksville.mesh.service.ServiceRepository
import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.SharingStarted
@ -39,6 +40,7 @@ class ConnectionsViewModel
@Inject
constructor(
radioConfigRepository: RadioConfigRepository,
serviceRepository: ServiceRepository,
nodeRepository: NodeRepository,
bluetoothRepository: BluetoothRepository,
private val uiPrefs: UiPrefs,
@ -50,7 +52,7 @@ constructor(
LocalConfig.getDefaultInstance(),
)
val connectionState = radioConfigRepository.connectionState
val connectionState = serviceRepository.connectionState
val myNodeInfo: StateFlow<MyNodeEntity?> = nodeRepository.myNodeInfo

View file

@ -21,7 +21,7 @@ import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import com.geeksville.mesh.database.NodeRepository
import com.geeksville.mesh.database.PacketRepository
import com.geeksville.mesh.repository.datastore.RadioConfigRepository
import com.geeksville.mesh.service.ServiceRepository
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.SharingStarted
import kotlinx.coroutines.flow.StateFlow
@ -38,7 +38,7 @@ abstract class BaseMapViewModel(
protected val mapPrefs: MapPrefs,
nodeRepository: NodeRepository,
packetRepository: PacketRepository,
radioConfigRepository: RadioConfigRepository,
serviceRepository: ServiceRepository,
) : ViewModel() {
val nodes: StateFlow<List<Node>> =
@ -72,7 +72,7 @@ abstract class BaseMapViewModel(
val ourNodeInfo: StateFlow<Node?> = nodeRepository.ourNodeInfo
val isConnected =
radioConfigRepository.connectionState
serviceRepository.connectionState
.map { it.isConnected() }
.stateIn(viewModelScope, SharingStarted.WhileSubscribed(5_000), false)

View file

@ -29,6 +29,7 @@ import com.geeksville.mesh.android.Logging
import com.geeksville.mesh.database.MeshLogRepository
import com.geeksville.mesh.database.NodeRepository
import com.geeksville.mesh.repository.datastore.RadioConfigRepository
import com.geeksville.mesh.service.ServiceRepository
import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.flow.MutableStateFlow
@ -57,12 +58,14 @@ import java.util.Locale
import javax.inject.Inject
import kotlin.math.roundToInt
@Suppress("LongParameterList")
@HiltViewModel
class SettingsViewModel
@Inject
constructor(
private val app: Application,
private val radioConfigRepository: RadioConfigRepository,
radioConfigRepository: RadioConfigRepository,
private val serviceRepository: ServiceRepository,
private val nodeRepository: NodeRepository,
private val meshLogRepository: MeshLogRepository,
private val uiPrefs: UiPrefs,
@ -77,7 +80,7 @@ constructor(
val ourNodeInfo: StateFlow<Node?> = nodeRepository.ourNodeInfo
val isConnected =
radioConfigRepository.connectionState
serviceRepository.connectionState
.map { it.isConnected() }
.stateIn(viewModelScope, SharingStarted.WhileSubscribed(5_000L), false)
@ -89,7 +92,7 @@ constructor(
)
val meshService: IMeshService?
get() = radioConfigRepository.meshService
get() = serviceRepository.meshService
val provideLocation: StateFlow<Boolean> =
myNodeInfo

View file

@ -20,7 +20,7 @@ package com.geeksville.mesh.ui.settings.radio
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import com.geeksville.mesh.database.NodeRepository
import com.geeksville.mesh.repository.datastore.RadioConfigRepository
import com.geeksville.mesh.service.ServiceRepository
import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.asStateFlow
@ -41,7 +41,7 @@ class CleanNodeDatabaseViewModel
@Inject
constructor(
private val nodeRepository: NodeRepository,
private val radioConfigRepository: RadioConfigRepository,
private val serviceRepository: ServiceRepository,
) : ViewModel() {
private val _olderThanDays = MutableStateFlow(30f)
val olderThanDays = _olderThanDays.asStateFlow()
@ -110,7 +110,7 @@ constructor(
if (nodeNums.isNotEmpty()) {
nodeRepository.deleteNodes(nodeNums)
val service = radioConfigRepository.meshService
val service = serviceRepository.meshService
if (service != null) {
for (nodeNum in nodeNums) {
service.removeByNodenum(service.packetId, nodeNum)

View file

@ -45,6 +45,7 @@ import com.geeksville.mesh.android.GeeksvilleApplication
import com.geeksville.mesh.android.Logging
import com.geeksville.mesh.android.isAnalyticsAvailable
import com.geeksville.mesh.config
import com.geeksville.mesh.database.NodeRepository
import com.geeksville.mesh.deviceProfile
import com.geeksville.mesh.model.getChannelList
import com.geeksville.mesh.model.toChannelSet
@ -54,6 +55,7 @@ import com.geeksville.mesh.navigation.ModuleRoute
import com.geeksville.mesh.repository.datastore.RadioConfigRepository
import com.geeksville.mesh.repository.location.LocationRepository
import com.geeksville.mesh.service.ConnectionState
import com.geeksville.mesh.service.ServiceRepository
import com.geeksville.mesh.util.UiText
import com.google.protobuf.MessageLite
import dagger.hilt.android.lifecycle.HiltViewModel
@ -98,6 +100,7 @@ data class RadioConfigState(
val analyticsEnabled: Boolean = false,
)
@Suppress("LongParameterList")
@HiltViewModel
class RadioConfigViewModel
@Inject
@ -105,13 +108,15 @@ constructor(
savedStateHandle: SavedStateHandle,
private val app: Application,
private val radioConfigRepository: RadioConfigRepository,
private val serviceRepository: ServiceRepository,
private val nodeRepository: NodeRepository,
private val locationRepository: LocationRepository,
private val mapConsentPrefs: MapConsentPrefs,
private val analyticsPrefs: AnalyticsPrefs,
) : ViewModel(),
Logging {
private val meshService: IMeshService?
get() = radioConfigRepository.meshService
get() = serviceRepository.meshService
private val destNum = savedStateHandle.toRoute<SettingsRoutes.Settings>().destNum
private val _destNode = MutableStateFlow<Node?>(null)
@ -137,7 +142,7 @@ constructor(
}
init {
radioConfigRepository.nodeDBbyNum
nodeRepository.nodeDBbyNum
.mapLatest { nodes -> nodes[destNum] ?: nodes.values.firstOrNull() }
.distinctUntilChanged()
.onEach {
@ -148,9 +153,9 @@ constructor(
radioConfigRepository.deviceProfileFlow.onEach { _currentDeviceProfile.value = it }.launchIn(viewModelScope)
radioConfigRepository.meshPacketFlow.onEach(::processPacketResponse).launchIn(viewModelScope)
serviceRepository.meshPacketFlow.onEach(::processPacketResponse).launchIn(viewModelScope)
combine(radioConfigRepository.connectionState, radioConfigState) { connState, configState ->
combine(serviceRepository.connectionState, radioConfigState) { connState, configState ->
_radioConfigState.update { it.copy(connected = connState == ConnectionState.CONNECTED) }
if (connState == ConnectionState.DISCONNECTED && configState.responseState.isWaiting()) {
sendError(R.string.disconnected)
@ -158,7 +163,7 @@ constructor(
}
.launchIn(viewModelScope)
radioConfigRepository.myNodeInfo
nodeRepository.myNodeInfo
.onEach { ni ->
_radioConfigState.update { it.copy(isLocal = destNum == null || destNum == ni?.myNodeNum) }
}
@ -170,7 +175,7 @@ constructor(
}
private val myNodeInfo: StateFlow<MyNodeEntity?>
get() = radioConfigRepository.myNodeInfo
get() = nodeRepository.myNodeInfo
val myNodeNum
get() = myNodeInfo.value?.myNodeNum
@ -342,7 +347,7 @@ constructor(
"Request factory reset error",
)
if (destNum == myNodeNum) {
viewModelScope.launch { radioConfigRepository.clearNodeDB() }
viewModelScope.launch { nodeRepository.clearNodeDB() }
}
}
@ -353,7 +358,7 @@ constructor(
"Request NodeDB reset error",
)
if (destNum == myNodeNum) {
viewModelScope.launch { radioConfigRepository.clearNodeDB() }
viewModelScope.launch { nodeRepository.clearNodeDB() }
}
}