fix(MeshService): revert `myNodeInfo` to local variable

avoids performance issues and simplifies state management as `MyNodeInfo` is only relevant during an active session
pull/1260/head
andrekir 2024-09-18 19:46:39 -03:00
rodzic 21c1c1cbd6
commit 81d8a9f93f
1 zmienionych plików z 3 dodań i 7 usunięć

Wyświetl plik

@ -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 {