diff --git a/features/roomlist/src/main/java/io/element/android/x/features/roomlist/RoomListViewModel.kt b/features/roomlist/src/main/java/io/element/android/x/features/roomlist/RoomListViewModel.kt index e8d50887c4..aae69e5497 100644 --- a/features/roomlist/src/main/java/io/element/android/x/features/roomlist/RoomListViewModel.kt +++ b/features/roomlist/src/main/java/io/element/android/x/features/roomlist/RoomListViewModel.kt @@ -20,6 +20,8 @@ import kotlinx.coroutines.flow.flowOn import kotlinx.coroutines.flow.map import kotlinx.coroutines.launch +private const val extendedRangeSize = 40 + class RoomListViewModel( private val client: MatrixClient, initialState: RoomListViewState @@ -69,7 +71,12 @@ class RoomListViewModel( fun updateVisibleRange(range: IntRange) { viewModelScope.launch { if (range.isEmpty()) return@launch - client.roomSummaryDataSource().setSlidingSyncRange(range) + val midExtendedRangeSize = extendedRangeSize / 2 + val extendedRangeStart = (range.first - midExtendedRangeSize).coerceAtLeast(0) + // Safe to give bigger size than room list + val extendedRangeEnd = range.last + midExtendedRangeSize + val extendedRange = IntRange(extendedRangeStart, extendedRangeEnd) + client.roomSummaryDataSource().setSlidingSyncRange(extendedRange) } } diff --git a/libraries/matrix/src/main/java/io/element/android/x/matrix/MatrixClient.kt b/libraries/matrix/src/main/java/io/element/android/x/matrix/MatrixClient.kt index 24b7793721..2ac426a03d 100644 --- a/libraries/matrix/src/main/java/io/element/android/x/matrix/MatrixClient.kt +++ b/libraries/matrix/src/main/java/io/element/android/x/matrix/MatrixClient.kt @@ -49,7 +49,7 @@ class MatrixClient internal constructor( ) .name(name = "HomeScreenView") .syncMode(mode = SlidingSyncMode.SELECTIVE) - .addRange(0u, 10u) + .addRange(0u, 30u) .build() private val slidingSync = client