fix(MeshService): revert myNodeInfo to local variable

avoids performance issues and simplifies state management as `MyNodeInfo` is only relevant during an active session
This commit is contained in:
andrekir 2024-09-18 19:46:39 -03:00
parent 21c1c1cbd6
commit 81d8a9f93f

View file

@ -329,7 +329,7 @@ class MeshService : Service(), Logging {
/// BEGINNING OF MODEL - FIXME, move elsewhere
///
val myNodeInfo: MyNodeInfo? get() = radioConfigRepository.myNodeInfo.value
private var myNodeInfo: MyNodeInfo? = null
private val configTotal by lazy { ConfigProtos.Config.getDescriptor().fields.size }
private val moduleTotal by lazy { ModuleConfigProtos.ModuleConfig.getDescriptor().fields.size }
@ -1517,15 +1517,11 @@ class MeshService : Service(), Logging {
errormsg("Did not receive a valid config")
} else {
debug("Installing new node DB")
myNodeInfo = newMyNodeInfo
radioConfigRepository.installNodeDB(newMyNodeInfo!!, newNodes.map { it.toEntity() })
newNodes.clear() // Just to save RAM ;-)
withTimeoutOrNull(timeMillis = 5000) {
while (myNodeInfo == null) {
delay(100)
}
} ?: errormsg("Timeout: installNodeDB failed!")
haveNodeDB = true // we now have nodes from real hardware
sendToRadio(newMeshPacketTo(myNodeNum).buildAdminPacket {