Improve MatrixRoom.createTimeline API.
This commit is contained in:
parent
c02436d3f0
commit
e35eda0c67
15 changed files with 112 additions and 94 deletions
|
|
@ -12,6 +12,7 @@ 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.core.UniqueId
|
||||
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.Timeline
|
||||
import io.element.android.libraries.mediaviewer.impl.model.GroupedMediaItems
|
||||
|
|
@ -44,7 +45,7 @@ class LiveMediaTimeline @Inject constructor(
|
|||
override suspend fun getTimeline(): Result<Timeline> = mutex.withLock {
|
||||
val currentTimeline = timeline
|
||||
if (currentTimeline == null) {
|
||||
room.createTimeline(onlyMedia = true)
|
||||
room.createTimeline(CreateTimelineParams.MediaOnly)
|
||||
.onSuccess { timeline = it }
|
||||
} else {
|
||||
Result.success(currentTimeline)
|
||||
|
|
@ -68,9 +69,11 @@ class FocusedMediaTimeline(
|
|||
) : MediaTimeline {
|
||||
override suspend fun getTimeline(): Result<Timeline> {
|
||||
return room.createTimeline(
|
||||
focusedOnEventId = eventId,
|
||||
onlyPinnedEvents = onlyPinnedEvents,
|
||||
onlyMedia = true,
|
||||
createTimelineParams = if (onlyPinnedEvents) {
|
||||
CreateTimelineParams.PinnedOnly
|
||||
} else {
|
||||
CreateTimelineParams.MediaOnlyFocused(eventId)
|
||||
},
|
||||
)
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ package io.element.android.libraries.mediaviewer.impl.datasource
|
|||
|
||||
import com.google.common.truth.Truth.assertThat
|
||||
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.Timeline
|
||||
import io.element.android.libraries.matrix.test.AN_EVENT_ID
|
||||
|
|
@ -75,7 +76,7 @@ class FocusedMediaTimelineTest {
|
|||
|
||||
@Test
|
||||
fun `getTimeline returns the timeline provided by the room`() = runTest {
|
||||
val createTimelineResult = lambdaRecorder<EventId?, Boolean, Boolean, Result<Timeline>> { _, _, _ ->
|
||||
val createTimelineResult = lambdaRecorder<CreateTimelineParams, Result<Timeline>> {
|
||||
Result.success(FakeTimeline())
|
||||
}
|
||||
val room = FakeMatrixRoom(
|
||||
|
|
@ -87,13 +88,12 @@ class FocusedMediaTimelineTest {
|
|||
)
|
||||
val timeline = sut.getTimeline()
|
||||
assertThat(timeline.isSuccess).isTrue()
|
||||
createTimelineResult.assertions().isCalledOnce()
|
||||
.with(value(AN_EVENT_ID), value(false), value(true))
|
||||
createTimelineResult.assertions().isCalledOnce().with(value(CreateTimelineParams.MediaOnlyFocused(AN_EVENT_ID)))
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `getTimeline returns the timeline provided by the room for pinned Events`() = runTest {
|
||||
val createTimelineResult = lambdaRecorder<EventId?, Boolean, Boolean, Result<Timeline>> { _, _, _ ->
|
||||
val createTimelineResult = lambdaRecorder<CreateTimelineParams, Result<Timeline>> {
|
||||
Result.success(FakeTimeline())
|
||||
}
|
||||
val room = FakeMatrixRoom(
|
||||
|
|
@ -106,8 +106,7 @@ class FocusedMediaTimelineTest {
|
|||
)
|
||||
val timeline = sut.getTimeline()
|
||||
assertThat(timeline.isSuccess).isTrue()
|
||||
createTimelineResult.assertions().isCalledOnce()
|
||||
.with(value(AN_EVENT_ID), value(true), value(true))
|
||||
createTimelineResult.assertions().isCalledOnce().with(value(CreateTimelineParams.PinnedOnly))
|
||||
}
|
||||
|
||||
private fun createFocusedMediaTimeline(
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@
|
|||
package io.element.android.libraries.mediaviewer.impl.datasource
|
||||
|
||||
import com.google.common.truth.Truth.assertThat
|
||||
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.Timeline
|
||||
import io.element.android.libraries.matrix.test.room.FakeMatrixRoom
|
||||
|
|
@ -28,7 +28,7 @@ class LiveMediaTimelineTest {
|
|||
|
||||
@Test
|
||||
fun `getTimeline returns the timeline provided by the room, then from cache`() = runTest {
|
||||
val createTimelineResult = lambdaRecorder<EventId?, Boolean, Boolean, Result<Timeline>> { _, _, _ ->
|
||||
val createTimelineResult = lambdaRecorder<CreateTimelineParams, Result<Timeline>> {
|
||||
Result.success(FakeTimeline())
|
||||
}
|
||||
val room = FakeMatrixRoom(
|
||||
|
|
@ -39,8 +39,7 @@ class LiveMediaTimelineTest {
|
|||
)
|
||||
val timeline = sut.getTimeline()
|
||||
assertThat(timeline.isSuccess).isTrue()
|
||||
createTimelineResult.assertions().isCalledOnce()
|
||||
.with(value(null), value(false), value(true))
|
||||
createTimelineResult.assertions().isCalledOnce().with(value(CreateTimelineParams.MediaOnly))
|
||||
val timeline2 = sut.getTimeline()
|
||||
assertThat(timeline2.isSuccess).isTrue()
|
||||
// No called another time
|
||||
|
|
|
|||
|
|
@ -57,7 +57,7 @@ class TimelineMediaGalleryDataSourceTest {
|
|||
val fakeTimeline = FakeTimeline()
|
||||
val sut = createTimelineMediaGalleryDataSource(
|
||||
room = FakeMatrixRoom(
|
||||
createTimelineResult = { _, _, _ -> Result.success(fakeTimeline) },
|
||||
createTimelineResult = { Result.success(fakeTimeline) },
|
||||
roomCoroutineScope = backgroundScope,
|
||||
)
|
||||
)
|
||||
|
|
@ -75,7 +75,7 @@ class TimelineMediaGalleryDataSourceTest {
|
|||
runTest {
|
||||
val sut = createTimelineMediaGalleryDataSource(
|
||||
room = FakeMatrixRoom(
|
||||
createTimelineResult = { _, _, _ -> Result.success(fakeTimeline) },
|
||||
createTimelineResult = { Result.success(fakeTimeline) },
|
||||
roomCoroutineScope = backgroundScope,
|
||||
)
|
||||
)
|
||||
|
|
@ -112,7 +112,7 @@ class TimelineMediaGalleryDataSourceTest {
|
|||
}
|
||||
val sut = createTimelineMediaGalleryDataSource(
|
||||
room = FakeMatrixRoom(
|
||||
createTimelineResult = { _, _, _ -> Result.success(fakeTimeline) },
|
||||
createTimelineResult = { Result.success(fakeTimeline) },
|
||||
roomCoroutineScope = backgroundScope,
|
||||
)
|
||||
)
|
||||
|
|
@ -135,7 +135,7 @@ class TimelineMediaGalleryDataSourceTest {
|
|||
}
|
||||
val sut = createTimelineMediaGalleryDataSource(
|
||||
room = FakeMatrixRoom(
|
||||
createTimelineResult = { _, _, _ -> Result.success(fakeTimeline) },
|
||||
createTimelineResult = { Result.success(fakeTimeline) },
|
||||
roomCoroutineScope = backgroundScope,
|
||||
)
|
||||
)
|
||||
|
|
@ -154,7 +154,7 @@ class TimelineMediaGalleryDataSourceTest {
|
|||
fun `test - failing to load timeline should emit an error`() = runTest {
|
||||
val sut = createTimelineMediaGalleryDataSource(
|
||||
room = FakeMatrixRoom(
|
||||
createTimelineResult = { _, _, _ -> Result.failure(AN_EXCEPTION) },
|
||||
createTimelineResult = { Result.failure(AN_EXCEPTION) },
|
||||
roomCoroutineScope = backgroundScope,
|
||||
)
|
||||
)
|
||||
|
|
@ -176,7 +176,7 @@ class TimelineMediaGalleryDataSourceTest {
|
|||
)
|
||||
val sut = createTimelineMediaGalleryDataSource(
|
||||
room = FakeMatrixRoom(
|
||||
createTimelineResult = { _, _, _ -> Result.success(fakeTimeline) },
|
||||
createTimelineResult = { Result.success(fakeTimeline) },
|
||||
roomCoroutineScope = backgroundScope,
|
||||
)
|
||||
)
|
||||
|
|
|
|||
|
|
@ -52,7 +52,7 @@ class MediaGalleryPresenterTest {
|
|||
),
|
||||
room = FakeMatrixRoom(
|
||||
displayName = A_ROOM_NAME,
|
||||
createTimelineResult = { _, _, _ -> Result.success(FakeTimeline()) },
|
||||
createTimelineResult = { Result.success(FakeTimeline()) },
|
||||
)
|
||||
)
|
||||
presenter.test {
|
||||
|
|
@ -71,7 +71,7 @@ class MediaGalleryPresenterTest {
|
|||
val presenter = createMediaGalleryPresenter(
|
||||
room = FakeMatrixRoom(
|
||||
displayName = A_ROOM_NAME,
|
||||
createTimelineResult = { _, _, _ -> Result.success(FakeTimeline()) },
|
||||
createTimelineResult = { Result.success(FakeTimeline()) },
|
||||
)
|
||||
)
|
||||
presenter.test {
|
||||
|
|
@ -101,7 +101,7 @@ class MediaGalleryPresenterTest {
|
|||
room = FakeMatrixRoom(
|
||||
sessionId = A_USER_ID,
|
||||
displayName = A_ROOM_NAME,
|
||||
createTimelineResult = { _, _, _ -> Result.success(FakeTimeline()) },
|
||||
createTimelineResult = { Result.success(FakeTimeline()) },
|
||||
canRedactOwnResult = { Result.success(canDeleteOwn) }
|
||||
)
|
||||
)
|
||||
|
|
@ -144,7 +144,7 @@ class MediaGalleryPresenterTest {
|
|||
room = FakeMatrixRoom(
|
||||
sessionId = A_USER_ID,
|
||||
displayName = A_ROOM_NAME,
|
||||
createTimelineResult = { _, _, _ -> Result.success(FakeTimeline()) },
|
||||
createTimelineResult = { Result.success(FakeTimeline()) },
|
||||
canRedactOtherResult = { Result.success(canDeleteOther) }
|
||||
)
|
||||
)
|
||||
|
|
@ -177,7 +177,7 @@ class MediaGalleryPresenterTest {
|
|||
val presenter = createMediaGalleryPresenter(
|
||||
room = FakeMatrixRoom(
|
||||
displayName = A_ROOM_NAME,
|
||||
createTimelineResult = { _, _, _ -> Result.success(FakeTimeline()) },
|
||||
createTimelineResult = { Result.success(FakeTimeline()) },
|
||||
)
|
||||
)
|
||||
presenter.test {
|
||||
|
|
@ -244,7 +244,7 @@ class MediaGalleryPresenterTest {
|
|||
)
|
||||
val presenter = createMediaGalleryPresenter(
|
||||
room = FakeMatrixRoom(
|
||||
createTimelineResult = { _, _, _ -> Result.success(FakeTimeline()) },
|
||||
createTimelineResult = { Result.success(FakeTimeline()) },
|
||||
),
|
||||
navigator = navigator,
|
||||
)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue