Only display placeholder list when the room list hasn't loaded yet

This commit is contained in:
Jorge Martín 2024-02-02 13:28:30 +01:00
parent 17f616b708
commit 166ed9ae79

View file

@ -21,6 +21,7 @@ import io.element.android.libraries.androidutils.diff.DiffCacheUpdater
import io.element.android.libraries.androidutils.diff.MutableListDiffCache import io.element.android.libraries.androidutils.diff.MutableListDiffCache
import io.element.android.libraries.core.coroutine.CoroutineDispatchers import io.element.android.libraries.core.coroutine.CoroutineDispatchers
import io.element.android.libraries.matrix.api.notificationsettings.NotificationSettingsService import io.element.android.libraries.matrix.api.notificationsettings.NotificationSettingsService
import io.element.android.libraries.matrix.api.roomlist.RoomList
import io.element.android.libraries.matrix.api.roomlist.RoomListService import io.element.android.libraries.matrix.api.roomlist.RoomListService
import io.element.android.libraries.matrix.api.roomlist.RoomSummary import io.element.android.libraries.matrix.api.roomlist.RoomSummary
import kotlinx.collections.immutable.ImmutableList import kotlinx.collections.immutable.ImmutableList
@ -113,10 +114,9 @@ class RoomListDataSource @Inject constructor(
} }
private suspend fun buildAndEmitAllRooms(roomSummaries: List<RoomSummary>) { private suspend fun buildAndEmitAllRooms(roomSummaries: List<RoomSummary>) {
if (diffCache.isEmpty()) { if (diffCache.isEmpty() && roomListService.allRooms.loadingState.value is RoomList.LoadingState.NotLoaded) {
_allRooms.emit( // If the room list is not loaded, we emit a fake placeholders list
RoomListRoomSummaryFactory.createFakeList() _allRooms.emit(RoomListRoomSummaryFactory.createFakeList())
)
} else { } else {
val roomListRoomSummaries = ArrayList<RoomListRoomSummary>() val roomListRoomSummaries = ArrayList<RoomListRoomSummary>()
for (index in diffCache.indices()) { for (index in diffCache.indices()) {