Improve MatrixRoom.createTimeline API.
This commit is contained in:
parent
c02436d3f0
commit
e35eda0c67
15 changed files with 112 additions and 94 deletions
|
|
@ -14,6 +14,7 @@ import io.element.android.libraries.di.RoomScope
|
|||
import io.element.android.libraries.di.SingleIn
|
||||
import io.element.android.libraries.featureflag.api.FeatureFlagService
|
||||
import io.element.android.libraries.featureflag.api.FeatureFlags
|
||||
import io.element.android.libraries.matrix.api.room.CreateTimelineParams
|
||||
import io.element.android.libraries.matrix.api.room.MatrixRoom
|
||||
import io.element.android.libraries.matrix.api.sync.SyncService
|
||||
import io.element.android.libraries.matrix.api.timeline.Timeline
|
||||
|
|
@ -104,7 +105,7 @@ class PinnedEventsTimelineProvider @Inject constructor(
|
|||
is AsyncData.Uninitialized, is AsyncData.Failure -> {
|
||||
timelineStateFlow.emit(AsyncData.Loading())
|
||||
withContext(dispatchers.io) {
|
||||
room.createTimeline(onlyPinnedEvents = true)
|
||||
room.createTimeline(CreateTimelineParams.PinnedOnly)
|
||||
}
|
||||
.fold(
|
||||
{ timelineStateFlow.emit(AsyncData.Success(it)) },
|
||||
|
|
|
|||
|
|
@ -11,6 +11,7 @@ import com.squareup.anvil.annotations.ContributesBinding
|
|||
import io.element.android.libraries.di.RoomScope
|
||||
import io.element.android.libraries.di.SingleIn
|
||||
import io.element.android.libraries.matrix.api.core.EventId
|
||||
import io.element.android.libraries.matrix.api.room.CreateTimelineParams
|
||||
import io.element.android.libraries.matrix.api.room.MatrixRoom
|
||||
import io.element.android.libraries.matrix.api.timeline.MatrixTimelineItem
|
||||
import io.element.android.libraries.matrix.api.timeline.Timeline
|
||||
|
|
@ -64,7 +65,7 @@ class TimelineController @Inject constructor(
|
|||
}
|
||||
|
||||
suspend fun focusOnEvent(eventId: EventId): Result<Unit> {
|
||||
return room.createTimeline(focusedOnEventId = eventId)
|
||||
return room.createTimeline(CreateTimelineParams.Focused(eventId))
|
||||
.onFailure {
|
||||
if (it is CancellationException) {
|
||||
throw it
|
||||
|
|
|
|||
|
|
@ -55,7 +55,7 @@ class PinnedMessagesBannerPresenterTest {
|
|||
@Test
|
||||
fun `present - loading state`() = runTest {
|
||||
val room = FakeMatrixRoom(
|
||||
createTimelineResult = { _, _, _ -> Result.success(FakeTimeline()) }
|
||||
createTimelineResult = { Result.success(FakeTimeline()) }
|
||||
).apply {
|
||||
givenRoomInfo(aRoomInfo(pinnedEventIds = listOf(AN_EVENT_ID)))
|
||||
}
|
||||
|
|
@ -86,7 +86,7 @@ class PinnedMessagesBannerPresenterTest {
|
|||
)
|
||||
)
|
||||
val room = FakeMatrixRoom(
|
||||
createTimelineResult = { _, _, _ -> Result.success(pinnedEventsTimeline) }
|
||||
createTimelineResult = { Result.success(pinnedEventsTimeline) }
|
||||
).apply {
|
||||
givenRoomInfo(aRoomInfo(pinnedEventIds = listOf(AN_EVENT_ID, AN_EVENT_ID_2)))
|
||||
}
|
||||
|
|
@ -125,7 +125,7 @@ class PinnedMessagesBannerPresenterTest {
|
|||
)
|
||||
)
|
||||
val room = FakeMatrixRoom(
|
||||
createTimelineResult = { _, _, _ -> Result.success(pinnedEventsTimeline) }
|
||||
createTimelineResult = { Result.success(pinnedEventsTimeline) }
|
||||
).apply {
|
||||
givenRoomInfo(aRoomInfo(pinnedEventIds = listOf(AN_EVENT_ID, AN_EVENT_ID_2)))
|
||||
}
|
||||
|
|
@ -160,7 +160,7 @@ class PinnedMessagesBannerPresenterTest {
|
|||
@Test
|
||||
fun `present - timeline failed`() = runTest {
|
||||
val room = FakeMatrixRoom(
|
||||
createTimelineResult = { _, _, _ -> Result.failure(Exception()) }
|
||||
createTimelineResult = { Result.failure(Exception()) }
|
||||
).apply {
|
||||
givenRoomInfo(aRoomInfo(pinnedEventIds = listOf(AN_EVENT_ID)))
|
||||
}
|
||||
|
|
|
|||
|
|
@ -83,7 +83,7 @@ class PinnedMessagesListPresenterTest {
|
|||
@Test
|
||||
fun `present - timeline failure state`() = runTest {
|
||||
val room = FakeMatrixRoom(
|
||||
createTimelineResult = { _, _, _ -> Result.failure(RuntimeException()) },
|
||||
createTimelineResult = { Result.failure(RuntimeException()) },
|
||||
canRedactOwnResult = { Result.success(true) },
|
||||
canRedactOtherResult = { Result.success(true) },
|
||||
canUserPinUnpinResult = { Result.success(true) },
|
||||
|
|
@ -102,7 +102,7 @@ class PinnedMessagesListPresenterTest {
|
|||
@Test
|
||||
fun `present - empty state`() = runTest {
|
||||
val room = FakeMatrixRoom(
|
||||
createTimelineResult = { _, _, _ -> Result.success(FakeTimeline()) },
|
||||
createTimelineResult = { Result.success(FakeTimeline()) },
|
||||
canRedactOwnResult = { Result.success(true) },
|
||||
canRedactOtherResult = { Result.success(true) },
|
||||
canUserPinUnpinResult = { Result.success(true) },
|
||||
|
|
@ -122,7 +122,7 @@ class PinnedMessagesListPresenterTest {
|
|||
fun `present - filled state`() = runTest {
|
||||
val pinnedEventsTimeline = createPinnedMessagesTimeline()
|
||||
val room = FakeMatrixRoom(
|
||||
createTimelineResult = { _, _, _ -> Result.success(pinnedEventsTimeline) },
|
||||
createTimelineResult = { Result.success(pinnedEventsTimeline) },
|
||||
canRedactOwnResult = { Result.success(true) },
|
||||
canRedactOtherResult = { Result.success(true) },
|
||||
canUserPinUnpinResult = { Result.success(true) },
|
||||
|
|
@ -149,7 +149,7 @@ class PinnedMessagesListPresenterTest {
|
|||
val pinnedEventsTimeline = createPinnedMessagesTimeline()
|
||||
val analyticsService = FakeAnalyticsService()
|
||||
val room = FakeMatrixRoom(
|
||||
createTimelineResult = { _, _, _ -> Result.success(pinnedEventsTimeline) },
|
||||
createTimelineResult = { Result.success(pinnedEventsTimeline) },
|
||||
canRedactOwnResult = { Result.success(true) },
|
||||
canRedactOtherResult = { Result.success(true) },
|
||||
canUserPinUnpinResult = { Result.success(true) },
|
||||
|
|
@ -195,7 +195,7 @@ class PinnedMessagesListPresenterTest {
|
|||
}
|
||||
val pinnedEventsTimeline = createPinnedMessagesTimeline()
|
||||
val room = FakeMatrixRoom(
|
||||
createTimelineResult = { _, _, _ -> Result.success(pinnedEventsTimeline) },
|
||||
createTimelineResult = { Result.success(pinnedEventsTimeline) },
|
||||
canRedactOwnResult = { Result.success(true) },
|
||||
canRedactOtherResult = { Result.success(true) },
|
||||
canUserPinUnpinResult = { Result.success(true) },
|
||||
|
|
@ -224,7 +224,7 @@ class PinnedMessagesListPresenterTest {
|
|||
}
|
||||
val pinnedEventsTimeline = createPinnedMessagesTimeline()
|
||||
val room = FakeMatrixRoom(
|
||||
createTimelineResult = { _, _, _ -> Result.success(pinnedEventsTimeline) },
|
||||
createTimelineResult = { Result.success(pinnedEventsTimeline) },
|
||||
canRedactOwnResult = { Result.success(true) },
|
||||
canRedactOtherResult = { Result.success(true) },
|
||||
canUserPinUnpinResult = { Result.success(true) },
|
||||
|
|
@ -253,7 +253,7 @@ class PinnedMessagesListPresenterTest {
|
|||
}
|
||||
val pinnedEventsTimeline = createPinnedMessagesTimeline()
|
||||
val room = FakeMatrixRoom(
|
||||
createTimelineResult = { _, _, _ -> Result.success(pinnedEventsTimeline) },
|
||||
createTimelineResult = { Result.success(pinnedEventsTimeline) },
|
||||
canRedactOwnResult = { Result.success(true) },
|
||||
canRedactOtherResult = { Result.success(true) },
|
||||
canUserPinUnpinResult = { Result.success(true) },
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@ class TimelineControllerTest {
|
|||
val detachedTimeline = FakeTimeline(name = "detached")
|
||||
val matrixRoom = FakeMatrixRoom(
|
||||
liveTimeline = liveTimeline,
|
||||
createTimelineResult = { _, _, _ -> Result.success(detachedTimeline) }
|
||||
createTimelineResult = { Result.success(detachedTimeline) }
|
||||
)
|
||||
val sut = TimelineController(matrixRoom)
|
||||
|
||||
|
|
@ -63,7 +63,7 @@ class TimelineControllerTest {
|
|||
var callNumber = 0
|
||||
val matrixRoom = FakeMatrixRoom(
|
||||
liveTimeline = liveTimeline,
|
||||
createTimelineResult = { _, _, _ ->
|
||||
createTimelineResult = {
|
||||
callNumber++
|
||||
when (callNumber) {
|
||||
1 -> Result.success(detachedTimeline1)
|
||||
|
|
@ -117,7 +117,7 @@ class TimelineControllerTest {
|
|||
val detachedTimeline = FakeTimeline(name = "detached")
|
||||
val matrixRoom = FakeMatrixRoom(
|
||||
liveTimeline = liveTimeline,
|
||||
createTimelineResult = { _, _, _ -> Result.success(detachedTimeline) }
|
||||
createTimelineResult = { Result.success(detachedTimeline) }
|
||||
)
|
||||
val sut = TimelineController(matrixRoom)
|
||||
sut.activeTimelineFlow().test {
|
||||
|
|
@ -167,7 +167,7 @@ class TimelineControllerTest {
|
|||
}
|
||||
val matrixRoom = FakeMatrixRoom(
|
||||
liveTimeline = liveTimeline,
|
||||
createTimelineResult = { _, _, _ -> Result.success(detachedTimeline) }
|
||||
createTimelineResult = { Result.success(detachedTimeline) }
|
||||
)
|
||||
val sut = TimelineController(matrixRoom)
|
||||
sut.activeTimelineFlow().test {
|
||||
|
|
@ -192,7 +192,7 @@ class TimelineControllerTest {
|
|||
val detachedTimeline = FakeTimeline(name = "detached")
|
||||
val matrixRoom = FakeMatrixRoom(
|
||||
liveTimeline = liveTimeline,
|
||||
createTimelineResult = { _, _, _ -> Result.success(detachedTimeline) }
|
||||
createTimelineResult = { Result.success(detachedTimeline) }
|
||||
)
|
||||
val sut = TimelineController(matrixRoom)
|
||||
|
||||
|
|
|
|||
|
|
@ -483,7 +483,7 @@ import kotlin.time.Duration.Companion.seconds
|
|||
)
|
||||
val room = FakeMatrixRoom(
|
||||
liveTimeline = liveTimeline,
|
||||
createTimelineResult = { _, _, _ -> Result.success(detachedTimeline) },
|
||||
createTimelineResult = { Result.success(detachedTimeline) },
|
||||
canUserSendMessageResult = { _, _ -> Result.success(true) },
|
||||
)
|
||||
val presenter = createTimelinePresenter(
|
||||
|
|
@ -561,7 +561,7 @@ import kotlin.time.Duration.Companion.seconds
|
|||
liveTimeline = FakeTimeline(
|
||||
timelineItems = flowOf(emptyList()),
|
||||
),
|
||||
createTimelineResult = { _, _, _ -> Result.failure(Throwable("An error")) },
|
||||
createTimelineResult = { Result.failure(Throwable("An error")) },
|
||||
canUserSendMessageResult = { _, _ -> Result.success(true) },
|
||||
)
|
||||
)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue