favorite : use distinctUntilChanged

This commit is contained in:
ganfra 2024-02-15 15:54:53 +01:00
parent fdba1b2dc6
commit 497f4d9526

View file

@ -54,8 +54,10 @@ import io.element.android.libraries.matrix.api.verification.SessionVerificationS
import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.collect import kotlinx.coroutines.flow.collect
import kotlinx.coroutines.flow.distinctUntilChanged
import kotlinx.coroutines.flow.first import kotlinx.coroutines.flow.first
import kotlinx.coroutines.flow.flatMapLatest import kotlinx.coroutines.flow.flatMapLatest
import kotlinx.coroutines.flow.map
import kotlinx.coroutines.flow.onEach import kotlinx.coroutines.flow.onEach
import kotlinx.coroutines.flow.takeWhile import kotlinx.coroutines.flow.takeWhile
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
@ -206,23 +208,21 @@ class RoomListPresenter @Inject constructor(
client.getRoom(event.roomListRoomSummary.roomId)?.use { room -> client.getRoom(event.roomListRoomSummary.roomId)?.use { room ->
val isContextMenuShownFlow = snapshotFlow { val isShowingContextMenuFlow = snapshotFlow { contextMenuState.value is RoomListState.ContextMenu.Shown }
contextMenuState.value is RoomListState.ContextMenu.Shown .distinctUntilChanged()
}
room.roomInfoFlow val isFavoriteFlow = room.roomInfoFlow
.onEach { roomInfo -> .map { it.isFavorite }
contextMenuState.value = initialState.copy( .distinctUntilChanged()
isFavorite = roomInfo.isFavorite,
) isFavoriteFlow
} .onEach { isFavorite ->
.flatMapLatest { contextMenuState.value = initialState.copy(isFavorite = isFavorite)
isContextMenuShownFlow
}
.takeWhile { isContextMenuShown ->
isContextMenuShown
} }
.flatMapLatest { isShowingContextMenuFlow }
.takeWhile { isShowingContextMenu -> isShowingContextMenu }
.collect() .collect()
} }
} }