From 5cf9741b139b74ba5368190d03585007fa0e0cdf Mon Sep 17 00:00:00 2001 From: andrekir Date: Fri, 25 Oct 2024 07:50:34 -0300 Subject: [PATCH] refactor: unified `getUser` repository call for convention --- .../main/java/com/geeksville/mesh/model/NodeDB.kt | 14 +++++++++++--- .../main/java/com/geeksville/mesh/model/UIState.kt | 7 +------ .../repository/datastore/RadioConfigRepository.kt | 2 ++ .../com/geeksville/mesh/service/MeshService.kt | 8 ++------ 4 files changed, 16 insertions(+), 15 deletions(-) diff --git a/app/src/main/java/com/geeksville/mesh/model/NodeDB.kt b/app/src/main/java/com/geeksville/mesh/model/NodeDB.kt index 871b356be..b78eb5814 100644 --- a/app/src/main/java/com/geeksville/mesh/model/NodeDB.kt +++ b/app/src/main/java/com/geeksville/mesh/model/NodeDB.kt @@ -2,6 +2,8 @@ package com.geeksville.mesh.model import androidx.lifecycle.Lifecycle import androidx.lifecycle.coroutineScope +import com.geeksville.mesh.DataPacket +import com.geeksville.mesh.MeshProtos import com.geeksville.mesh.database.dao.NodeInfoDao import com.geeksville.mesh.database.entity.MyNodeEntity import com.geeksville.mesh.database.entity.NodeEntity @@ -35,9 +37,15 @@ class NodeDB @Inject constructor( private val _nodeDBbyNum = MutableStateFlow>(mapOf()) val nodeDBbyNum: StateFlow> get() = _nodeDBbyNum - fun getUser(userId: String?) = userId?.let { id -> - nodeDBbyNum.value.values.find { it.user.id == id }?.user - } + fun getUser(nodeNum: Int): MeshProtos.User = getUser(DataPacket.nodeNumToDefaultId(nodeNum)) + + fun getUser(userId: String): MeshProtos.User = + nodeDBbyNum.value.values.find { it.user.id == userId }?.user + ?: MeshProtos.User.newBuilder() + .setLongName("Meshtastic ${userId.takeLast(n = 4)}") + .setShortName(userId.takeLast(n = 4)) + .setHwModel(MeshProtos.HardwareModel.UNSET) + .build() init { nodeInfoDao.getMyNodeInfo().onEach { _myNodeInfo.value = it } diff --git a/app/src/main/java/com/geeksville/mesh/model/UIState.kt b/app/src/main/java/com/geeksville/mesh/model/UIState.kt index 67cc3ef75..183a0d1d8 100644 --- a/app/src/main/java/com/geeksville/mesh/model/UIState.kt +++ b/app/src/main/java/com/geeksville/mesh/model/UIState.kt @@ -251,12 +251,7 @@ class UIViewModel @Inject constructor( fun updateMapCenterAndZoom(center: GeoPoint, zoom: Double) = _mapState.update { it.copy(center = center, zoom = zoom) } - fun getUser(userId: String?) = nodeDB.getUser(userId) ?: user { - id = userId.orEmpty() - longName = app.getString(R.string.unknown_username) - shortName = app.getString(R.string.unknown_node_short_name) - hwModel = MeshProtos.HardwareModel.UNSET - } + fun getUser(userId: String?) = nodeDB.getUser(userId ?: DataPacket.ID_BROADCAST) private val _snackbarText = MutableLiveData(null) val snackbarText: LiveData get() = _snackbarText diff --git a/app/src/main/java/com/geeksville/mesh/repository/datastore/RadioConfigRepository.kt b/app/src/main/java/com/geeksville/mesh/repository/datastore/RadioConfigRepository.kt index ef8e071fd..36d6dbb65 100644 --- a/app/src/main/java/com/geeksville/mesh/repository/datastore/RadioConfigRepository.kt +++ b/app/src/main/java/com/geeksville/mesh/repository/datastore/RadioConfigRepository.kt @@ -56,6 +56,8 @@ class RadioConfigRepository @Inject constructor( */ val nodeDBbyNum: StateFlow> get() = nodeDB.nodeDBbyNum + fun getUser(nodeNum: Int) = nodeDB.getUser(nodeNum) + suspend fun upsert(node: NodeEntity) = nodeDB.upsert(node) suspend fun installNodeDB(mi: MyNodeEntity, nodes: List) { nodeDB.installNodeDB(mi, nodes) diff --git a/app/src/main/java/com/geeksville/mesh/service/MeshService.kt b/app/src/main/java/com/geeksville/mesh/service/MeshService.kt index e7c9636bf..a43e76a43 100644 --- a/app/src/main/java/com/geeksville/mesh/service/MeshService.kt +++ b/app/src/main/java/com/geeksville/mesh/service/MeshService.kt @@ -440,12 +440,8 @@ class MeshService : Service(), Logging { } } - private fun getUserName(num: Int): String { - val user = nodeDBbyNodeNum[num]?.user - val longName = user?.longName ?: getString(R.string.unknown_username) - val shortName = user?.shortName ?: DataPacket.nodeNumToDefaultId(num) - return "$longName ($shortName)" - } + private fun getUserName(num: Int): String = + with(radioConfigRepository.getUser(num)) { "$longName ($shortName)" } private val numNodes get() = nodeDBbyNodeNum.size