favorite : use distinctUntilChanged

This commit is contained in:
ganfra 2024-02-15 15:54:53 +01:00
parent 6ef50081bd
commit 25047f7093

View file

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