From f83113710f63ee5bcc19fc9431dffcb8ddb1cbd5 Mon Sep 17 00:00:00 2001 From: andrekir Date: Thu, 15 Feb 2024 08:55:35 -0300 Subject: [PATCH] refactor: `contacts` to use combine() with channels --- app/src/main/java/com/geeksville/mesh/model/UIState.kt | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) 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 5fc8056cf..5d5b609db 100644 --- a/app/src/main/java/com/geeksville/mesh/model/UIState.kt +++ b/app/src/main/java/com/geeksville/mesh/model/UIState.kt @@ -201,15 +201,14 @@ class UIViewModel @Inject constructor( packetRepository.getMessagesFrom(contactKey) }.asLiveData() - @OptIn(ExperimentalCoroutinesApi::class) - val contacts: LiveData> = packetRepository.getContacts().mapLatest { + val contacts = combine(packetRepository.getContacts(), channels) { contacts, channelSet -> // Add empty channel placeholders (always show Broadcast contacts, even when empty) val placeholder = (0 until channelSet.settingsCount).associate { ch -> val contactKey = "$ch${DataPacket.ID_BROADCAST}" val data = DataPacket(bytes = null, dataType = 1, time = 0L, channel = ch) contactKey to Packet(0L, 1, contactKey, 0L, data) } - it + (placeholder - it.keys) + contacts + (placeholder - contacts.keys) }.asLiveData() @OptIn(ExperimentalCoroutinesApi::class)