From ad2d7dc8c57256b10b23242b1d963a8e7e07f45d Mon Sep 17 00:00:00 2001 From: ganfra Date: Mon, 9 Feb 2026 20:42:36 +0100 Subject: [PATCH] Debounce SpaceState.hasMoreToLoad --- .../space/impl/root/SpacePresenter.kt | 20 +++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/root/SpacePresenter.kt b/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/root/SpacePresenter.kt index 055982cefa..807d139e6a 100644 --- a/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/root/SpacePresenter.kt +++ b/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/root/SpacePresenter.kt @@ -6,6 +6,8 @@ * Please see LICENSE files in the repository root for full details. */ +@file:OptIn(FlowPreview::class) + package io.element.android.features.space.impl.root import androidx.compose.runtime.Composable @@ -47,10 +49,13 @@ import kotlinx.collections.immutable.toImmutableList import kotlinx.collections.immutable.toImmutableMap import kotlinx.collections.immutable.toImmutableSet import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.FlowPreview import kotlinx.coroutines.async import kotlinx.coroutines.awaitAll +import kotlinx.coroutines.flow.debounce import kotlinx.coroutines.flow.map import kotlinx.coroutines.launch +import kotlin.time.Duration.Companion.milliseconds @Inject class SpacePresenter( @@ -80,13 +85,16 @@ class SpacePresenter( val localCoroutineScope = rememberCoroutineScope() val hasMoreToLoad by remember { - spaceRoomList.paginationStatusFlow.mapState { status -> - when (status) { - is SpaceRoomList.PaginationStatus.Idle -> status.hasMoreToLoad - SpaceRoomList.PaginationStatus.Loading -> true + spaceRoomList.paginationStatusFlow + .mapState { status -> + when (status) { + is SpaceRoomList.PaginationStatus.Idle -> status.hasMoreToLoad + SpaceRoomList.PaginationStatus.Loading -> true + } } - } - }.collectAsState() + // Debounce to give more time for spaceRoomList to updates + .debounce(100.milliseconds) + }.collectAsState(true) val permissions by room.permissionsAsState(SpacePermissions.DEFAULT) { perms -> perms.spacePermissions()