sforkowany z mirror/meshtastic-android
refactor: improve service admin channel index logic
rodzic
6a72c65a83
commit
9869a9208b
|
@ -48,10 +48,9 @@ class ChannelSetRepository @Inject constructor(
|
|||
}
|
||||
|
||||
/**
|
||||
* Updates the [ChannelSettings] list with the provided channel and returns the index of the
|
||||
* admin channel after the update (if not found, returns 0).
|
||||
* Updates the [ChannelSettings] list with the provided channel.
|
||||
*/
|
||||
suspend fun updateChannelSettings(channel: Channel): Int {
|
||||
suspend fun updateChannelSettings(channel: Channel) {
|
||||
channelSetStore.updateData { preference ->
|
||||
if (preference.settingsCount > channel.index) {
|
||||
preference.toBuilder().setSettings(channel.index, channel.settings).build()
|
||||
|
@ -59,7 +58,6 @@ class ChannelSetRepository @Inject constructor(
|
|||
preference.toBuilder().addSettings(channel.settings).build()
|
||||
}
|
||||
}
|
||||
return getAdminChannel()
|
||||
}
|
||||
|
||||
suspend fun setLoraConfig(config: ConfigProtos.Config.LoRaConfig) {
|
||||
|
@ -68,13 +66,6 @@ class ChannelSetRepository @Inject constructor(
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the index of the admin channel (or 0 if not found).
|
||||
*/
|
||||
private suspend fun getAdminChannel(): Int = fetchInitialChannelSet()?.settingsList
|
||||
?.indexOfFirst { it.name.lowercase() == "admin" }
|
||||
?.coerceAtLeast(0) ?: 0
|
||||
|
||||
suspend fun fetchInitialChannelSet() = channelSetStore.data.firstOrNull()
|
||||
|
||||
}
|
||||
|
|
|
@ -45,7 +45,7 @@ class RadioConfigRepository @Inject constructor(
|
|||
* @param channel The [Channel] provided.
|
||||
* @return the index of the admin channel after the update (if not found, returns 0).
|
||||
*/
|
||||
suspend fun updateChannelSettings(channel: Channel): Int {
|
||||
suspend fun updateChannelSettings(channel: Channel) {
|
||||
return channelSetRepository.updateChannelSettings(channel)
|
||||
}
|
||||
|
||||
|
|
|
@ -456,7 +456,8 @@ class MeshService : Service(), Logging {
|
|||
private val myNodeID get() = toNodeID(myNodeNum)
|
||||
|
||||
/// Admin channel index
|
||||
private var adminChannelIndex: Int = 0
|
||||
private val adminChannelIndex: Int
|
||||
get() = channelSet.settingsList.map { it.name.lowercase() }.indexOf("admin")
|
||||
|
||||
/// Generate a new mesh packet builder with our node as the sender, and the specified node num
|
||||
private fun newMeshPacketTo(idNum: Int) = MeshPacket.newBuilder().apply {
|
||||
|
@ -958,7 +959,7 @@ class MeshService : Service(), Logging {
|
|||
}
|
||||
|
||||
private fun updateChannelSettings(ch: ChannelProtos.Channel) = serviceScope.handledLaunch {
|
||||
adminChannelIndex = radioConfigRepository.updateChannelSettings(ch)
|
||||
radioConfigRepository.updateChannelSettings(ch)
|
||||
}
|
||||
|
||||
private fun currentSecond() = (System.currentTimeMillis() / 1000).toInt()
|
||||
|
|
Ładowanie…
Reference in New Issue