MediaViewerEvents -> MediaViewerEvent
This commit is contained in:
parent
f3dd7b86d8
commit
54efb46294
7 changed files with 97 additions and 97 deletions
|
|
@ -11,22 +11,22 @@ package io.element.android.libraries.mediaviewer.impl.viewer
|
|||
import io.element.android.libraries.matrix.api.core.EventId
|
||||
import io.element.android.libraries.matrix.api.timeline.Timeline
|
||||
|
||||
sealed interface MediaViewerEvents {
|
||||
data class LoadMedia(val data: MediaViewerPageData.MediaViewerData) : MediaViewerEvents
|
||||
data class SaveOnDisk(val data: MediaViewerPageData.MediaViewerData) : MediaViewerEvents
|
||||
data class Share(val data: MediaViewerPageData.MediaViewerData) : MediaViewerEvents
|
||||
data class OpenWith(val data: MediaViewerPageData.MediaViewerData) : MediaViewerEvents
|
||||
data class ClearLoadingError(val data: MediaViewerPageData.MediaViewerData) : MediaViewerEvents
|
||||
data class ViewInTimeline(val eventId: EventId) : MediaViewerEvents
|
||||
data class Forward(val eventId: EventId) : MediaViewerEvents
|
||||
data class OpenInfo(val data: MediaViewerPageData.MediaViewerData) : MediaViewerEvents
|
||||
sealed interface MediaViewerEvent {
|
||||
data class LoadMedia(val data: MediaViewerPageData.MediaViewerData) : MediaViewerEvent
|
||||
data class SaveOnDisk(val data: MediaViewerPageData.MediaViewerData) : MediaViewerEvent
|
||||
data class Share(val data: MediaViewerPageData.MediaViewerData) : MediaViewerEvent
|
||||
data class OpenWith(val data: MediaViewerPageData.MediaViewerData) : MediaViewerEvent
|
||||
data class ClearLoadingError(val data: MediaViewerPageData.MediaViewerData) : MediaViewerEvent
|
||||
data class ViewInTimeline(val eventId: EventId) : MediaViewerEvent
|
||||
data class Forward(val eventId: EventId) : MediaViewerEvent
|
||||
data class OpenInfo(val data: MediaViewerPageData.MediaViewerData) : MediaViewerEvent
|
||||
data class ConfirmDelete(
|
||||
val eventId: EventId,
|
||||
val data: MediaViewerPageData.MediaViewerData,
|
||||
) : MediaViewerEvents
|
||||
) : MediaViewerEvent
|
||||
|
||||
data object CloseBottomSheet : MediaViewerEvents
|
||||
data class Delete(val eventId: EventId) : MediaViewerEvents
|
||||
data class OnNavigateTo(val index: Int) : MediaViewerEvents
|
||||
data class LoadMore(val direction: Timeline.PaginationDirection) : MediaViewerEvents
|
||||
data object CloseBottomSheet : MediaViewerEvent
|
||||
data class Delete(val eventId: EventId) : MediaViewerEvent
|
||||
data class OnNavigateTo(val index: Int) : MediaViewerEvent
|
||||
data class LoadMore(val direction: Timeline.PaginationDirection) : MediaViewerEvent
|
||||
}
|
||||
|
|
@ -95,42 +95,42 @@ class MediaViewerPresenter(
|
|||
}
|
||||
localMediaActions.Configure()
|
||||
|
||||
fun handleEvent(event: MediaViewerEvents) {
|
||||
fun handleEvent(event: MediaViewerEvent) {
|
||||
when (event) {
|
||||
is MediaViewerEvents.LoadMedia -> {
|
||||
is MediaViewerEvent.LoadMedia -> {
|
||||
coroutineScope.downloadMedia(data = event.data)
|
||||
}
|
||||
is MediaViewerEvents.ClearLoadingError -> {
|
||||
is MediaViewerEvent.ClearLoadingError -> {
|
||||
dataSource.clearLoadingError(event.data)
|
||||
}
|
||||
is MediaViewerEvents.SaveOnDisk -> {
|
||||
is MediaViewerEvent.SaveOnDisk -> {
|
||||
mediaBottomSheetState = MediaBottomSheetState.Hidden
|
||||
coroutineScope.saveOnDisk(event.data.downloadedMedia.value)
|
||||
}
|
||||
is MediaViewerEvents.Share -> {
|
||||
is MediaViewerEvent.Share -> {
|
||||
mediaBottomSheetState = MediaBottomSheetState.Hidden
|
||||
coroutineScope.share(event.data.downloadedMedia.value)
|
||||
}
|
||||
is MediaViewerEvents.OpenWith -> {
|
||||
is MediaViewerEvent.OpenWith -> {
|
||||
mediaBottomSheetState = MediaBottomSheetState.Hidden
|
||||
coroutineScope.open(event.data.downloadedMedia.value)
|
||||
}
|
||||
is MediaViewerEvents.Delete -> {
|
||||
is MediaViewerEvent.Delete -> {
|
||||
mediaBottomSheetState = MediaBottomSheetState.Hidden
|
||||
coroutineScope.delete(event.eventId)
|
||||
}
|
||||
is MediaViewerEvents.ViewInTimeline -> {
|
||||
is MediaViewerEvent.ViewInTimeline -> {
|
||||
mediaBottomSheetState = MediaBottomSheetState.Hidden
|
||||
navigator.onViewInTimelineClick(event.eventId)
|
||||
}
|
||||
is MediaViewerEvents.Forward -> {
|
||||
is MediaViewerEvent.Forward -> {
|
||||
mediaBottomSheetState = MediaBottomSheetState.Hidden
|
||||
navigator.onForwardClick(
|
||||
eventId = event.eventId,
|
||||
fromPinnedEvents = inputs.mode.getTimelineMode() == Timeline.Mode.PinnedEvents,
|
||||
)
|
||||
}
|
||||
is MediaViewerEvents.OpenInfo -> coroutineScope.launch {
|
||||
is MediaViewerEvent.OpenInfo -> coroutineScope.launch {
|
||||
mediaBottomSheetState = MediaBottomSheetState.MediaDetailsBottomSheetState(
|
||||
eventId = event.data.eventId,
|
||||
canDelete = when (event.data.mediaInfo.senderId) {
|
||||
|
|
@ -142,20 +142,20 @@ class MediaViewerPresenter(
|
|||
thumbnailSource = event.data.thumbnailSource,
|
||||
)
|
||||
}
|
||||
is MediaViewerEvents.ConfirmDelete -> {
|
||||
is MediaViewerEvent.ConfirmDelete -> {
|
||||
mediaBottomSheetState = MediaBottomSheetState.MediaDeleteConfirmationState(
|
||||
eventId = event.eventId,
|
||||
mediaInfo = event.data.mediaInfo,
|
||||
thumbnailSource = event.data.thumbnailSource ?: event.data.mediaSource,
|
||||
)
|
||||
}
|
||||
MediaViewerEvents.CloseBottomSheet -> {
|
||||
MediaViewerEvent.CloseBottomSheet -> {
|
||||
mediaBottomSheetState = MediaBottomSheetState.Hidden
|
||||
}
|
||||
is MediaViewerEvents.OnNavigateTo -> {
|
||||
is MediaViewerEvent.OnNavigateTo -> {
|
||||
currentIndex.intValue = event.index
|
||||
}
|
||||
is MediaViewerEvents.LoadMore -> coroutineScope.launch {
|
||||
is MediaViewerEvent.LoadMore -> coroutineScope.launch {
|
||||
dataSource.loadMore(event.direction)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@ data class MediaViewerState(
|
|||
val snackbarMessage: SnackbarMessage?,
|
||||
val canShowInfo: Boolean,
|
||||
val mediaBottomSheetState: MediaBottomSheetState,
|
||||
val eventSink: (MediaViewerEvents) -> Unit,
|
||||
val eventSink: (MediaViewerEvent) -> Unit,
|
||||
)
|
||||
|
||||
sealed interface MediaViewerPageData {
|
||||
|
|
|
|||
|
|
@ -226,7 +226,7 @@ fun aMediaViewerState(
|
|||
currentIndex: Int = 0,
|
||||
canShowInfo: Boolean = true,
|
||||
mediaBottomSheetState: MediaBottomSheetState = MediaBottomSheetState.Hidden,
|
||||
eventSink: (MediaViewerEvents) -> Unit = {},
|
||||
eventSink: (MediaViewerEvent) -> Unit = {},
|
||||
) = MediaViewerState(
|
||||
initiallySelectedEventId = EventId("\$a:b"),
|
||||
listData = listData.toImmutableList(),
|
||||
|
|
|
|||
|
|
@ -126,7 +126,7 @@ fun MediaViewerView(
|
|||
}
|
||||
LaunchedEffect(pagerState) {
|
||||
snapshotFlow { pagerState.currentPage }.collect { page ->
|
||||
state.eventSink(MediaViewerEvents.OnNavigateTo(page))
|
||||
state.eventSink(MediaViewerEvent.OnNavigateTo(page))
|
||||
}
|
||||
}
|
||||
HorizontalPager(
|
||||
|
|
@ -145,7 +145,7 @@ fun MediaViewerView(
|
|||
}
|
||||
is MediaViewerPageData.Loading -> {
|
||||
LaunchedEffect(dataForPage.timestamp) {
|
||||
state.eventSink(MediaViewerEvents.LoadMore(dataForPage.direction))
|
||||
state.eventSink(MediaViewerEvent.LoadMore(dataForPage.direction))
|
||||
}
|
||||
MediaViewerLoadingPage(
|
||||
onDismiss = onBackClick,
|
||||
|
|
@ -154,7 +154,7 @@ fun MediaViewerView(
|
|||
is MediaViewerPageData.MediaViewerData -> {
|
||||
var bottomPaddingInPixels by remember { mutableIntStateOf(defaultBottomPaddingInPixels) }
|
||||
LaunchedEffect(Unit) {
|
||||
state.eventSink(MediaViewerEvents.LoadMedia(dataForPage))
|
||||
state.eventSink(MediaViewerEvent.LoadMedia(dataForPage))
|
||||
}
|
||||
Box(
|
||||
modifier = Modifier.fillMaxSize()
|
||||
|
|
@ -173,10 +173,10 @@ fun MediaViewerView(
|
|||
textFileViewer = textFileViewer,
|
||||
onDismiss = onBackClick,
|
||||
onRetry = {
|
||||
state.eventSink(MediaViewerEvents.LoadMedia(dataForPage))
|
||||
state.eventSink(MediaViewerEvent.LoadMedia(dataForPage))
|
||||
},
|
||||
onDismissError = {
|
||||
state.eventSink(MediaViewerEvents.ClearLoadingError(dataForPage))
|
||||
state.eventSink(MediaViewerEvent.ClearLoadingError(dataForPage))
|
||||
},
|
||||
onShowOverlayChange = {
|
||||
showOverlay = it
|
||||
|
|
@ -215,7 +215,7 @@ fun MediaViewerView(
|
|||
canShowInfo = state.canShowInfo,
|
||||
onBackClick = onBackClick,
|
||||
onInfoClick = {
|
||||
state.eventSink(MediaViewerEvents.OpenInfo(currentData))
|
||||
state.eventSink(MediaViewerEvent.OpenInfo(currentData))
|
||||
},
|
||||
eventSink = state.eventSink
|
||||
)
|
||||
|
|
@ -251,25 +251,25 @@ fun MediaViewerView(
|
|||
MediaDetailsBottomSheet(
|
||||
state = bottomSheetState,
|
||||
onViewInTimeline = {
|
||||
state.eventSink(MediaViewerEvents.ViewInTimeline(it))
|
||||
state.eventSink(MediaViewerEvent.ViewInTimeline(it))
|
||||
},
|
||||
onShare = {
|
||||
(currentData as? MediaViewerPageData.MediaViewerData)?.let {
|
||||
state.eventSink(MediaViewerEvents.Share(currentData))
|
||||
state.eventSink(MediaViewerEvent.Share(currentData))
|
||||
}
|
||||
},
|
||||
onForward = {
|
||||
state.eventSink(MediaViewerEvents.Forward(it))
|
||||
state.eventSink(MediaViewerEvent.Forward(it))
|
||||
},
|
||||
onDownload = {
|
||||
(currentData as? MediaViewerPageData.MediaViewerData)?.let {
|
||||
state.eventSink(MediaViewerEvents.SaveOnDisk(currentData))
|
||||
state.eventSink(MediaViewerEvent.SaveOnDisk(currentData))
|
||||
}
|
||||
},
|
||||
onDelete = { eventId ->
|
||||
(currentData as? MediaViewerPageData.MediaViewerData)?.let {
|
||||
state.eventSink(
|
||||
MediaViewerEvents.ConfirmDelete(
|
||||
MediaViewerEvent.ConfirmDelete(
|
||||
eventId,
|
||||
currentData,
|
||||
)
|
||||
|
|
@ -277,7 +277,7 @@ fun MediaViewerView(
|
|||
}
|
||||
},
|
||||
onDismiss = {
|
||||
state.eventSink(MediaViewerEvents.CloseBottomSheet)
|
||||
state.eventSink(MediaViewerEvent.CloseBottomSheet)
|
||||
},
|
||||
)
|
||||
}
|
||||
|
|
@ -285,10 +285,10 @@ fun MediaViewerView(
|
|||
MediaDeleteConfirmationBottomSheet(
|
||||
state = bottomSheetState,
|
||||
onDelete = {
|
||||
state.eventSink(MediaViewerEvents.Delete(it))
|
||||
state.eventSink(MediaViewerEvent.Delete(it))
|
||||
},
|
||||
onDismiss = {
|
||||
state.eventSink(MediaViewerEvents.CloseBottomSheet)
|
||||
state.eventSink(MediaViewerEvent.CloseBottomSheet)
|
||||
},
|
||||
)
|
||||
}
|
||||
|
|
@ -458,7 +458,7 @@ private fun MediaViewerTopBar(
|
|||
canShowInfo: Boolean,
|
||||
onBackClick: () -> Unit,
|
||||
onInfoClick: () -> Unit,
|
||||
eventSink: (MediaViewerEvents) -> Unit,
|
||||
eventSink: (MediaViewerEvent) -> Unit,
|
||||
) {
|
||||
val downloadedMedia by data.downloadedMedia
|
||||
val actionsEnabled = downloadedMedia.isSuccess()
|
||||
|
|
@ -500,7 +500,7 @@ private fun MediaViewerTopBar(
|
|||
IconButton(
|
||||
enabled = actionsEnabled,
|
||||
onClick = {
|
||||
eventSink(MediaViewerEvents.OpenWith(data))
|
||||
eventSink(MediaViewerEvent.OpenWith(data))
|
||||
},
|
||||
) {
|
||||
when (mimeType) {
|
||||
|
|
|
|||
|
|
@ -226,7 +226,7 @@ class MediaViewerPresenterTest {
|
|||
)
|
||||
val updatedState = awaitItem()
|
||||
updatedState.eventSink(
|
||||
MediaViewerEvents.LoadMedia(
|
||||
MediaViewerEvent.LoadMedia(
|
||||
aMediaViewerPageData(
|
||||
mediaSource = MediaSource(aUrl)
|
||||
)
|
||||
|
|
@ -266,7 +266,7 @@ class MediaViewerPresenterTest {
|
|||
)
|
||||
val updatedState = awaitItem()
|
||||
updatedState.eventSink(
|
||||
MediaViewerEvents.OpenInfo(
|
||||
MediaViewerEvent.OpenInfo(
|
||||
aMediaViewerPageData(
|
||||
mediaSource = MediaSource(aUrl)
|
||||
)
|
||||
|
|
@ -275,7 +275,7 @@ class MediaViewerPresenterTest {
|
|||
val withInfoState = awaitItem()
|
||||
assertThat(withInfoState.mediaBottomSheetState).isInstanceOf(MediaBottomSheetState.MediaDetailsBottomSheetState::class.java)
|
||||
withInfoState.eventSink(
|
||||
MediaViewerEvents.CloseBottomSheet
|
||||
MediaViewerEvent.CloseBottomSheet
|
||||
)
|
||||
val finalState = awaitItem()
|
||||
assertThat(finalState.mediaBottomSheetState).isEqualTo(MediaBottomSheetState.Hidden)
|
||||
|
|
@ -306,7 +306,7 @@ class MediaViewerPresenterTest {
|
|||
)
|
||||
val updatedState = awaitItem()
|
||||
updatedState.eventSink(
|
||||
MediaViewerEvents.ClearLoadingError(
|
||||
MediaViewerEvent.ClearLoadingError(
|
||||
aMediaViewerPageData(
|
||||
mediaSource = MediaSource(aUrl)
|
||||
)
|
||||
|
|
@ -339,7 +339,7 @@ class MediaViewerPresenterTest {
|
|||
)
|
||||
val updatedState = awaitItem()
|
||||
updatedState.eventSink(
|
||||
MediaViewerEvents.Share(
|
||||
MediaViewerEvent.Share(
|
||||
aMediaViewerPageData(
|
||||
mediaSource = MediaSource(aUrl)
|
||||
)
|
||||
|
|
@ -372,7 +372,7 @@ class MediaViewerPresenterTest {
|
|||
)
|
||||
val updatedState = awaitItem()
|
||||
updatedState.eventSink(
|
||||
MediaViewerEvents.SaveOnDisk(
|
||||
MediaViewerEvent.SaveOnDisk(
|
||||
aMediaViewerPageData(
|
||||
mediaSource = MediaSource(aUrl)
|
||||
)
|
||||
|
|
@ -405,7 +405,7 @@ class MediaViewerPresenterTest {
|
|||
)
|
||||
val updatedState = awaitItem()
|
||||
updatedState.eventSink(
|
||||
MediaViewerEvents.OpenWith(
|
||||
MediaViewerEvent.OpenWith(
|
||||
aMediaViewerPageData(
|
||||
mediaSource = MediaSource(aUrl)
|
||||
)
|
||||
|
|
@ -438,7 +438,7 @@ class MediaViewerPresenterTest {
|
|||
)
|
||||
val updatedState = awaitItem()
|
||||
updatedState.eventSink(
|
||||
MediaViewerEvents.ConfirmDelete(
|
||||
MediaViewerEvent.ConfirmDelete(
|
||||
eventId = AN_EVENT_ID,
|
||||
data = aMediaViewerPageData(
|
||||
mediaSource = MediaSource(aUrl)
|
||||
|
|
@ -448,7 +448,7 @@ class MediaViewerPresenterTest {
|
|||
val withBottomSheetState = awaitItem()
|
||||
assertThat(withBottomSheetState.mediaBottomSheetState).isInstanceOf(MediaBottomSheetState.MediaDeleteConfirmationState::class.java)
|
||||
withBottomSheetState.eventSink(
|
||||
MediaViewerEvents.CloseBottomSheet
|
||||
MediaViewerEvent.CloseBottomSheet
|
||||
)
|
||||
val finalState = awaitItem()
|
||||
assertThat(finalState.mediaBottomSheetState).isEqualTo(MediaBottomSheetState.Hidden)
|
||||
|
|
@ -498,7 +498,7 @@ class MediaViewerPresenterTest {
|
|||
)
|
||||
val updatedState = awaitItem()
|
||||
updatedState.eventSink(
|
||||
MediaViewerEvents.ConfirmDelete(
|
||||
MediaViewerEvent.ConfirmDelete(
|
||||
eventId = AN_EVENT_ID,
|
||||
data = aMediaViewerPageData(
|
||||
mediaSource = MediaSource(aUrl)
|
||||
|
|
@ -508,7 +508,7 @@ class MediaViewerPresenterTest {
|
|||
val withBottomSheetState = awaitItem()
|
||||
assertThat(withBottomSheetState.mediaBottomSheetState).isInstanceOf(MediaBottomSheetState.MediaDeleteConfirmationState::class.java)
|
||||
updatedState.eventSink(
|
||||
MediaViewerEvents.Delete(
|
||||
MediaViewerEvent.Delete(
|
||||
eventId = AN_EVENT_ID,
|
||||
)
|
||||
)
|
||||
|
|
@ -551,7 +551,7 @@ class MediaViewerPresenterTest {
|
|||
)
|
||||
val updatedState = awaitItem()
|
||||
updatedState.eventSink(
|
||||
MediaViewerEvents.OnNavigateTo(1)
|
||||
MediaViewerEvent.OnNavigateTo(1)
|
||||
)
|
||||
val finalState = awaitItem()
|
||||
assertThat(finalState.currentIndex).isEqualTo(1)
|
||||
|
|
@ -606,7 +606,7 @@ class MediaViewerPresenterTest {
|
|||
val updatedState = awaitItem()
|
||||
// User navigate to the last item (forward loading indicator)
|
||||
updatedState.eventSink(
|
||||
MediaViewerEvents.OnNavigateTo(2)
|
||||
MediaViewerEvent.OnNavigateTo(2)
|
||||
)
|
||||
// data source claims that there is no more items to load forward
|
||||
mediaGalleryDataSource.emitGroupedMediaItems(
|
||||
|
|
@ -680,7 +680,7 @@ class MediaViewerPresenterTest {
|
|||
val updatedState = awaitItem()
|
||||
// User navigate to the first item (backward loading indicator)
|
||||
updatedState.eventSink(
|
||||
MediaViewerEvents.OnNavigateTo(0)
|
||||
MediaViewerEvent.OnNavigateTo(0)
|
||||
)
|
||||
// data source claims that there is no more items to load backward
|
||||
mediaGalleryDataSource.emitGroupedMediaItems(
|
||||
|
|
@ -728,7 +728,7 @@ class MediaViewerPresenterTest {
|
|||
val updatedState = awaitItem()
|
||||
// User navigate to the media
|
||||
updatedState.eventSink(
|
||||
MediaViewerEvents.OnNavigateTo(1)
|
||||
MediaViewerEvent.OnNavigateTo(1)
|
||||
)
|
||||
skipItems(1)
|
||||
// data source claims that there is no more items to load at all
|
||||
|
|
@ -771,7 +771,7 @@ class MediaViewerPresenterTest {
|
|||
)
|
||||
val updatedState = awaitItem()
|
||||
updatedState.eventSink(
|
||||
MediaViewerEvents.LoadMore(Timeline.PaginationDirection.BACKWARDS)
|
||||
MediaViewerEvent.LoadMore(Timeline.PaginationDirection.BACKWARDS)
|
||||
)
|
||||
loadMoreLambda.assertions().isCalledOnce().with(value(Timeline.PaginationDirection.BACKWARDS))
|
||||
}
|
||||
|
|
@ -796,10 +796,10 @@ class MediaViewerPresenterTest {
|
|||
)
|
||||
presenter.test {
|
||||
val initialState = awaitItem()
|
||||
initialState.eventSink(MediaViewerEvents.OpenInfo(aMediaViewerPageData()))
|
||||
initialState.eventSink(MediaViewerEvent.OpenInfo(aMediaViewerPageData()))
|
||||
val withBottomSheetState = awaitItem()
|
||||
assertThat(withBottomSheetState.mediaBottomSheetState).isInstanceOf(MediaBottomSheetState.MediaDetailsBottomSheetState::class.java)
|
||||
initialState.eventSink(MediaViewerEvents.ViewInTimeline(AN_EVENT_ID))
|
||||
initialState.eventSink(MediaViewerEvent.ViewInTimeline(AN_EVENT_ID))
|
||||
val finalState = awaitItem()
|
||||
assertThat(finalState.mediaBottomSheetState).isEqualTo(MediaBottomSheetState.Hidden)
|
||||
onViewInTimelineClickLambda.assertions().isCalledOnce().with(value(AN_EVENT_ID))
|
||||
|
|
@ -825,10 +825,10 @@ class MediaViewerPresenterTest {
|
|||
)
|
||||
presenter.test {
|
||||
val initialState = awaitItem()
|
||||
initialState.eventSink(MediaViewerEvents.OpenInfo(aMediaViewerPageData()))
|
||||
initialState.eventSink(MediaViewerEvent.OpenInfo(aMediaViewerPageData()))
|
||||
val withBottomSheetState = awaitItem()
|
||||
assertThat(withBottomSheetState.mediaBottomSheetState).isInstanceOf(MediaBottomSheetState.MediaDetailsBottomSheetState::class.java)
|
||||
initialState.eventSink(MediaViewerEvents.Forward(AN_EVENT_ID))
|
||||
initialState.eventSink(MediaViewerEvent.Forward(AN_EVENT_ID))
|
||||
val finalState = awaitItem()
|
||||
assertThat(finalState.mediaBottomSheetState).isEqualTo(MediaBottomSheetState.Hidden)
|
||||
onForwardClickLambda.assertions().isCalledOnce()
|
||||
|
|
@ -856,10 +856,10 @@ class MediaViewerPresenterTest {
|
|||
)
|
||||
presenter.test {
|
||||
val initialState = awaitItem()
|
||||
initialState.eventSink(MediaViewerEvents.OpenInfo(aMediaViewerPageData()))
|
||||
initialState.eventSink(MediaViewerEvent.OpenInfo(aMediaViewerPageData()))
|
||||
val withBottomSheetState = awaitItem()
|
||||
assertThat(withBottomSheetState.mediaBottomSheetState).isInstanceOf(MediaBottomSheetState.MediaDetailsBottomSheetState::class.java)
|
||||
initialState.eventSink(MediaViewerEvents.Forward(AN_EVENT_ID))
|
||||
initialState.eventSink(MediaViewerEvent.Forward(AN_EVENT_ID))
|
||||
val finalState = awaitItem()
|
||||
assertThat(finalState.mediaBottomSheetState).isEqualTo(MediaBottomSheetState.Hidden)
|
||||
onForwardClickLambda.assertions().isCalledOnce()
|
||||
|
|
|
|||
|
|
@ -43,7 +43,7 @@ class MediaViewerViewTest {
|
|||
|
||||
@Test
|
||||
fun `clicking on back invokes expected callback`() {
|
||||
val eventsRecorder = EventsRecorder<MediaViewerEvents>()
|
||||
val eventsRecorder = EventsRecorder<MediaViewerEvent>()
|
||||
val state = aMediaViewerState(
|
||||
eventSink = eventsRecorder
|
||||
)
|
||||
|
|
@ -56,8 +56,8 @@ class MediaViewerViewTest {
|
|||
}
|
||||
eventsRecorder.assertList(
|
||||
listOf(
|
||||
MediaViewerEvents.OnNavigateTo(0),
|
||||
MediaViewerEvents.LoadMedia(state.listData.first() as MediaViewerPageData.MediaViewerData),
|
||||
MediaViewerEvent.OnNavigateTo(0),
|
||||
MediaViewerEvent.LoadMedia(state.listData.first() as MediaViewerPageData.MediaViewerData),
|
||||
)
|
||||
)
|
||||
}
|
||||
|
|
@ -70,7 +70,7 @@ class MediaViewerViewTest {
|
|||
testMenuAction(
|
||||
data,
|
||||
CommonStrings.action_open_with,
|
||||
MediaViewerEvents.OpenWith(data),
|
||||
MediaViewerEvent.OpenWith(data),
|
||||
)
|
||||
}
|
||||
|
||||
|
|
@ -82,16 +82,16 @@ class MediaViewerViewTest {
|
|||
testMenuAction(
|
||||
data,
|
||||
CommonStrings.a11y_view_details,
|
||||
MediaViewerEvents.OpenInfo(data),
|
||||
MediaViewerEvent.OpenInfo(data),
|
||||
)
|
||||
}
|
||||
|
||||
private fun testMenuAction(
|
||||
data: MediaViewerPageData.MediaViewerData,
|
||||
contentDescriptionRes: Int,
|
||||
expectedEvent: MediaViewerEvents,
|
||||
expectedEvent: MediaViewerEvent,
|
||||
) {
|
||||
val eventsRecorder = EventsRecorder<MediaViewerEvents>()
|
||||
val eventsRecorder = EventsRecorder<MediaViewerEvent>()
|
||||
rule.setMediaViewerView(
|
||||
aMediaViewerState(
|
||||
listData = listOf(data),
|
||||
|
|
@ -102,8 +102,8 @@ class MediaViewerViewTest {
|
|||
rule.onNodeWithContentDescription(contentDescription).performClick()
|
||||
eventsRecorder.assertList(
|
||||
listOf(
|
||||
MediaViewerEvents.OnNavigateTo(0),
|
||||
MediaViewerEvents.LoadMedia(data),
|
||||
MediaViewerEvent.OnNavigateTo(0),
|
||||
MediaViewerEvent.LoadMedia(data),
|
||||
expectedEvent,
|
||||
)
|
||||
)
|
||||
|
|
@ -116,7 +116,7 @@ class MediaViewerViewTest {
|
|||
testBottomSheetAction(
|
||||
data,
|
||||
CommonStrings.action_save,
|
||||
MediaViewerEvents.SaveOnDisk(data),
|
||||
MediaViewerEvent.SaveOnDisk(data),
|
||||
)
|
||||
}
|
||||
|
||||
|
|
@ -127,16 +127,16 @@ class MediaViewerViewTest {
|
|||
testBottomSheetAction(
|
||||
data,
|
||||
CommonStrings.action_share,
|
||||
MediaViewerEvents.Share(data),
|
||||
MediaViewerEvent.Share(data),
|
||||
)
|
||||
}
|
||||
|
||||
private fun testBottomSheetAction(
|
||||
data: MediaViewerPageData.MediaViewerData,
|
||||
contentDescriptionRes: Int,
|
||||
expectedEvent: MediaViewerEvents,
|
||||
expectedEvent: MediaViewerEvent,
|
||||
) {
|
||||
val eventsRecorder = EventsRecorder<MediaViewerEvents>()
|
||||
val eventsRecorder = EventsRecorder<MediaViewerEvent>()
|
||||
rule.setMediaViewerView(
|
||||
aMediaViewerState(
|
||||
listData = listOf(data),
|
||||
|
|
@ -147,8 +147,8 @@ class MediaViewerViewTest {
|
|||
rule.clickOn(contentDescriptionRes)
|
||||
eventsRecorder.assertList(
|
||||
listOf(
|
||||
MediaViewerEvents.OnNavigateTo(0),
|
||||
MediaViewerEvents.LoadMedia(data),
|
||||
MediaViewerEvent.OnNavigateTo(0),
|
||||
MediaViewerEvent.LoadMedia(data),
|
||||
expectedEvent,
|
||||
)
|
||||
)
|
||||
|
|
@ -156,7 +156,7 @@ class MediaViewerViewTest {
|
|||
|
||||
@Test
|
||||
fun `clicking on image hides the overlay`() {
|
||||
val eventsRecorder = EventsRecorder<MediaViewerEvents>()
|
||||
val eventsRecorder = EventsRecorder<MediaViewerEvent>()
|
||||
val state = aMediaViewerState(
|
||||
eventSink = eventsRecorder
|
||||
)
|
||||
|
|
@ -176,15 +176,15 @@ class MediaViewerViewTest {
|
|||
.assertDoesNotExist()
|
||||
eventsRecorder.assertList(
|
||||
listOf(
|
||||
MediaViewerEvents.OnNavigateTo(0),
|
||||
MediaViewerEvents.LoadMedia(state.listData.first() as MediaViewerPageData.MediaViewerData),
|
||||
MediaViewerEvent.OnNavigateTo(0),
|
||||
MediaViewerEvent.LoadMedia(state.listData.first() as MediaViewerPageData.MediaViewerData),
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `clicking swipe on the image invokes the expected callback`() {
|
||||
val eventsRecorder = EventsRecorder<MediaViewerEvents>()
|
||||
val eventsRecorder = EventsRecorder<MediaViewerEvent>()
|
||||
val state = aMediaViewerState(
|
||||
eventSink = eventsRecorder
|
||||
)
|
||||
|
|
@ -199,15 +199,15 @@ class MediaViewerViewTest {
|
|||
}
|
||||
eventsRecorder.assertList(
|
||||
listOf(
|
||||
MediaViewerEvents.OnNavigateTo(0),
|
||||
MediaViewerEvents.LoadMedia(state.listData.first() as MediaViewerPageData.MediaViewerData),
|
||||
MediaViewerEvent.OnNavigateTo(0),
|
||||
MediaViewerEvent.LoadMedia(state.listData.first() as MediaViewerPageData.MediaViewerData),
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `error case, click on retry emits the expected Event`() {
|
||||
val eventsRecorder = EventsRecorder<MediaViewerEvents>()
|
||||
val eventsRecorder = EventsRecorder<MediaViewerEvent>()
|
||||
val data = aMediaViewerPageData(
|
||||
downloadedMedia = AsyncData.Failure(IllegalStateException("error")),
|
||||
)
|
||||
|
|
@ -220,16 +220,16 @@ class MediaViewerViewTest {
|
|||
rule.clickOn(CommonStrings.action_retry)
|
||||
eventsRecorder.assertList(
|
||||
listOf(
|
||||
MediaViewerEvents.OnNavigateTo(0),
|
||||
MediaViewerEvents.LoadMedia(data),
|
||||
MediaViewerEvents.LoadMedia(data),
|
||||
MediaViewerEvent.OnNavigateTo(0),
|
||||
MediaViewerEvent.LoadMedia(data),
|
||||
MediaViewerEvent.LoadMedia(data),
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `error case, click on cancel emits the expected Event`() {
|
||||
val eventsRecorder = EventsRecorder<MediaViewerEvents>()
|
||||
val eventsRecorder = EventsRecorder<MediaViewerEvent>()
|
||||
val data = aMediaViewerPageData(
|
||||
downloadedMedia = AsyncData.Failure(IllegalStateException("error")),
|
||||
)
|
||||
|
|
@ -242,9 +242,9 @@ class MediaViewerViewTest {
|
|||
rule.clickOn(CommonStrings.action_cancel)
|
||||
eventsRecorder.assertList(
|
||||
listOf(
|
||||
MediaViewerEvents.OnNavigateTo(0),
|
||||
MediaViewerEvents.LoadMedia(data),
|
||||
MediaViewerEvents.ClearLoadingError(data)
|
||||
MediaViewerEvent.OnNavigateTo(0),
|
||||
MediaViewerEvent.LoadMedia(data),
|
||||
MediaViewerEvent.ClearLoadingError(data)
|
||||
)
|
||||
)
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue