favorite : use distinctUntilChanged

This commit is contained in:
ganfra
2024-02-15 15:54:53 +01:00
parent 6ef50081bd
commit 25047f7093
@@ -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()
} }
} }