|
|
|
@ -21,6 +21,7 @@ import io.element.android.libraries.matrix.api.roomlist.RoomList
@@ -21,6 +21,7 @@ import io.element.android.libraries.matrix.api.roomlist.RoomList
|
|
|
|
|
import io.element.android.libraries.matrix.api.roomlist.RoomListFilter |
|
|
|
|
import io.element.android.libraries.matrix.api.roomlist.RoomListService |
|
|
|
|
import io.element.android.libraries.matrix.api.roomlist.loadAllIncrementally |
|
|
|
|
import kotlinx.coroutines.CoroutineDispatcher |
|
|
|
|
import kotlinx.coroutines.CoroutineScope |
|
|
|
|
import kotlinx.coroutines.flow.SharingStarted |
|
|
|
|
import kotlinx.coroutines.flow.StateFlow |
|
|
|
@ -42,6 +43,7 @@ private const val DEFAULT_PAGE_SIZE = 20
@@ -42,6 +43,7 @@ private const val DEFAULT_PAGE_SIZE = 20
|
|
|
|
|
internal class RustRoomListService( |
|
|
|
|
private val innerRoomListService: InnerRustRoomListService, |
|
|
|
|
private val sessionCoroutineScope: CoroutineScope, |
|
|
|
|
private val sessionDispatcher: CoroutineDispatcher, |
|
|
|
|
private val roomListFactory: RoomListFactory, |
|
|
|
|
) : RoomListService { |
|
|
|
|
override fun createRoomList( |
|
|
|
@ -54,6 +56,7 @@ internal class RustRoomListService(
@@ -54,6 +56,7 @@ internal class RustRoomListService(
|
|
|
|
|
pageSize = pageSize, |
|
|
|
|
initialFilter = initialFilter, |
|
|
|
|
coroutineScope = coroutineScope, |
|
|
|
|
coroutineContext = sessionDispatcher, |
|
|
|
|
) { |
|
|
|
|
when (source) { |
|
|
|
|
RoomList.Source.All -> innerRoomListService.allRooms() |
|
|
|
@ -64,6 +67,7 @@ internal class RustRoomListService(
@@ -64,6 +67,7 @@ internal class RustRoomListService(
|
|
|
|
|
|
|
|
|
|
override val allRooms: DynamicRoomList = roomListFactory.createRoomList( |
|
|
|
|
pageSize = DEFAULT_PAGE_SIZE, |
|
|
|
|
coroutineContext = sessionDispatcher, |
|
|
|
|
initialFilter = RoomListFilter.all(RoomListFilter.NonLeft), |
|
|
|
|
) { |
|
|
|
|
innerRoomListService.allRooms() |
|
|
|
@ -71,6 +75,7 @@ internal class RustRoomListService(
@@ -71,6 +75,7 @@ internal class RustRoomListService(
|
|
|
|
|
|
|
|
|
|
override val invites: RoomList = roomListFactory.createRoomList( |
|
|
|
|
pageSize = Int.MAX_VALUE, |
|
|
|
|
coroutineContext = sessionDispatcher, |
|
|
|
|
) { |
|
|
|
|
innerRoomListService.invites() |
|
|
|
|
} |
|
|
|
|