Make 'room list catch-up' analytics transaction network aware (#6233)
* Make 'room list catch-up' analytics transaction network aware. * Add `RoomListService.isInitialSyncDone`. Use this to simplify `DefaultAnalyticsRoomListStateWatcher`'s logic.
This commit is contained in:
committed by
GitHub
parent
1f69958dab
commit
70d5e1868a
@@ -24,6 +24,7 @@ import kotlinx.coroutines.flow.stateIn
|
||||
import org.matrix.rustcomponents.sdk.RoomListServiceState
|
||||
import org.matrix.rustcomponents.sdk.RoomListServiceSyncIndicator
|
||||
import timber.log.Timber
|
||||
import java.util.concurrent.atomic.AtomicBoolean
|
||||
import org.matrix.rustcomponents.sdk.RoomListService as InnerRustRoomListService
|
||||
|
||||
internal class RustRoomListService(
|
||||
@@ -33,6 +34,9 @@ internal class RustRoomListService(
|
||||
private val roomSyncSubscriber: RoomSyncSubscriber,
|
||||
private val sessionCoroutineScope: CoroutineScope,
|
||||
) : RoomListService {
|
||||
private val _isInitialSyncDone = AtomicBoolean(false)
|
||||
override val isInitialSyncDone: Boolean get() = _isInitialSyncDone.get()
|
||||
|
||||
override fun createRoomList(
|
||||
pageSize: Int,
|
||||
source: RoomList.Source,
|
||||
@@ -75,6 +79,9 @@ internal class RustRoomListService(
|
||||
.map { it.toRoomListState() }
|
||||
.onEach { state ->
|
||||
Timber.d("RoomList state=$state")
|
||||
if (state == RoomListService.State.Running) {
|
||||
_isInitialSyncDone.set(true)
|
||||
}
|
||||
}
|
||||
.distinctUntilChanged()
|
||||
.stateIn(sessionCoroutineScope, SharingStarted.Eagerly, RoomListService.State.Idle)
|
||||
|
||||
Reference in New Issue
Block a user