From b0f990e42ac78195b4edbe4c8afebdeab2e5b9a2 Mon Sep 17 00:00:00 2001 From: andrekir Date: Thu, 20 Jul 2023 18:35:03 -0300 Subject: [PATCH] refactor: improve `packetResponse` performance --- .../com/geeksville/mesh/database/MeshLogRepository.kt | 4 ++-- app/src/main/java/com/geeksville/mesh/model/UIState.kt | 9 +++++---- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/com/geeksville/mesh/database/MeshLogRepository.kt b/app/src/main/java/com/geeksville/mesh/database/MeshLogRepository.kt index 5a7e7fe18..03508b03f 100644 --- a/app/src/main/java/com/geeksville/mesh/database/MeshLogRepository.kt +++ b/app/src/main/java/com/geeksville/mesh/database/MeshLogRepository.kt @@ -12,8 +12,8 @@ class MeshLogRepository @Inject constructor(private val meshLogDaoLazy: dagger.L meshLogDaoLazy.get() } - suspend fun getAllLogs(): Flow> = withContext(Dispatchers.IO) { - meshLogDao.getAllLogs(MAX_ITEMS) + suspend fun getAllLogs(maxItems: Int = MAX_ITEMS): Flow> = withContext(Dispatchers.IO) { + meshLogDao.getAllLogs(maxItems) } suspend fun getAllLogsInReceiveOrder(maxItems: Int = MAX_ITEMS): Flow> = withContext(Dispatchers.IO) { 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 88cd2f708..c0a718035 100644 --- a/app/src/main/java/com/geeksville/mesh/model/UIState.kt +++ b/app/src/main/java/com/geeksville/mesh/model/UIState.kt @@ -153,10 +153,11 @@ class UIViewModel @Inject constructor( _ourNodeInfo.value = it }.launchIn(viewModelScope) - combine(meshLog, requestId) { packet, requestId -> - if (requestId != null) _packetResponse.value = - packet.firstOrNull { it.meshPacket?.decoded?.requestId == requestId } - }.launchIn(viewModelScope) + viewModelScope.launch { + combine(meshLogRepository.getAllLogs(9), requestId) { list, id -> + list.takeIf { id != null }?.firstOrNull { it.meshPacket?.decoded?.requestId == id } + }.collect { response -> _packetResponse.value = response } + } debug("ViewModel created") }