MediaGalleryEvents -> MediaGalleryEvent
This commit is contained in:
parent
34574fc391
commit
629abc07ff
5 changed files with 67 additions and 67 deletions
|
|
@ -14,22 +14,22 @@ import io.element.android.libraries.matrix.api.timeline.Timeline
|
||||||
import io.element.android.libraries.mediaviewer.api.MediaInfo
|
import io.element.android.libraries.mediaviewer.api.MediaInfo
|
||||||
import io.element.android.libraries.mediaviewer.impl.model.MediaItem
|
import io.element.android.libraries.mediaviewer.impl.model.MediaItem
|
||||||
|
|
||||||
sealed interface MediaGalleryEvents {
|
sealed interface MediaGalleryEvent {
|
||||||
data class ChangeMode(val mode: MediaGalleryMode) : MediaGalleryEvents
|
data class ChangeMode(val mode: MediaGalleryMode) : MediaGalleryEvent
|
||||||
data class LoadMore(val direction: Timeline.PaginationDirection) : MediaGalleryEvents
|
data class LoadMore(val direction: Timeline.PaginationDirection) : MediaGalleryEvent
|
||||||
data class Share(val eventId: EventId) : MediaGalleryEvents
|
data class Share(val eventId: EventId) : MediaGalleryEvent
|
||||||
data class Forward(val eventId: EventId) : MediaGalleryEvents
|
data class Forward(val eventId: EventId) : MediaGalleryEvent
|
||||||
data class SaveOnDisk(val eventId: EventId) : MediaGalleryEvents
|
data class SaveOnDisk(val eventId: EventId) : MediaGalleryEvent
|
||||||
data class OpenWith(val eventId: EventId) : MediaGalleryEvents
|
data class OpenWith(val eventId: EventId) : MediaGalleryEvent
|
||||||
data class OpenInfo(val mediaItem: MediaItem.Event) : MediaGalleryEvents
|
data class OpenInfo(val mediaItem: MediaItem.Event) : MediaGalleryEvent
|
||||||
data class ViewInTimeline(val eventId: EventId) : MediaGalleryEvents
|
data class ViewInTimeline(val eventId: EventId) : MediaGalleryEvent
|
||||||
|
|
||||||
data class ConfirmDelete(
|
data class ConfirmDelete(
|
||||||
val eventId: EventId,
|
val eventId: EventId,
|
||||||
val mediaInfo: MediaInfo,
|
val mediaInfo: MediaInfo,
|
||||||
val thumbnailSource: MediaSource?,
|
val thumbnailSource: MediaSource?,
|
||||||
) : MediaGalleryEvents
|
) : MediaGalleryEvent
|
||||||
|
|
||||||
data object CloseBottomSheet : MediaGalleryEvents
|
data object CloseBottomSheet : MediaGalleryEvent
|
||||||
data class Delete(val eventId: EventId) : MediaGalleryEvents
|
data class Delete(val eventId: EventId) : MediaGalleryEvent
|
||||||
}
|
}
|
||||||
|
|
@ -88,44 +88,44 @@ class MediaGalleryPresenter(
|
||||||
val snackbarMessage by snackbarDispatcher.collectSnackbarMessageAsState()
|
val snackbarMessage by snackbarDispatcher.collectSnackbarMessageAsState()
|
||||||
localMediaActions.Configure()
|
localMediaActions.Configure()
|
||||||
|
|
||||||
fun handleEvent(event: MediaGalleryEvents) {
|
fun handleEvent(event: MediaGalleryEvent) {
|
||||||
when (event) {
|
when (event) {
|
||||||
is MediaGalleryEvents.ChangeMode -> {
|
is MediaGalleryEvent.ChangeMode -> {
|
||||||
mode = event.mode
|
mode = event.mode
|
||||||
}
|
}
|
||||||
is MediaGalleryEvents.LoadMore -> coroutineScope.launch {
|
is MediaGalleryEvent.LoadMore -> coroutineScope.launch {
|
||||||
mediaGalleryDataSource.loadMore(event.direction)
|
mediaGalleryDataSource.loadMore(event.direction)
|
||||||
}
|
}
|
||||||
is MediaGalleryEvents.Delete -> coroutineScope.launch {
|
is MediaGalleryEvent.Delete -> coroutineScope.launch {
|
||||||
mediaGalleryDataSource.deleteItem(event.eventId)
|
mediaGalleryDataSource.deleteItem(event.eventId)
|
||||||
}
|
}
|
||||||
is MediaGalleryEvents.SaveOnDisk -> coroutineScope.launch {
|
is MediaGalleryEvent.SaveOnDisk -> coroutineScope.launch {
|
||||||
mediaBottomSheetState = MediaBottomSheetState.Hidden
|
mediaBottomSheetState = MediaBottomSheetState.Hidden
|
||||||
groupedMediaItems.dataOrNull().find(event.eventId)?.let {
|
groupedMediaItems.dataOrNull().find(event.eventId)?.let {
|
||||||
saveOnDisk(it)
|
saveOnDisk(it)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
is MediaGalleryEvents.OpenWith -> coroutineScope.launch {
|
is MediaGalleryEvent.OpenWith -> coroutineScope.launch {
|
||||||
mediaBottomSheetState = MediaBottomSheetState.Hidden
|
mediaBottomSheetState = MediaBottomSheetState.Hidden
|
||||||
groupedMediaItems.dataOrNull().find(event.eventId)?.let {
|
groupedMediaItems.dataOrNull().find(event.eventId)?.let {
|
||||||
openWith(it)
|
openWith(it)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
is MediaGalleryEvents.Share -> coroutineScope.launch {
|
is MediaGalleryEvent.Share -> coroutineScope.launch {
|
||||||
mediaBottomSheetState = MediaBottomSheetState.Hidden
|
mediaBottomSheetState = MediaBottomSheetState.Hidden
|
||||||
groupedMediaItems.dataOrNull().find(event.eventId)?.let {
|
groupedMediaItems.dataOrNull().find(event.eventId)?.let {
|
||||||
share(it)
|
share(it)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
is MediaGalleryEvents.Forward -> {
|
is MediaGalleryEvent.Forward -> {
|
||||||
mediaBottomSheetState = MediaBottomSheetState.Hidden
|
mediaBottomSheetState = MediaBottomSheetState.Hidden
|
||||||
navigator.onForwardClick(event.eventId)
|
navigator.onForwardClick(event.eventId)
|
||||||
}
|
}
|
||||||
is MediaGalleryEvents.ViewInTimeline -> {
|
is MediaGalleryEvent.ViewInTimeline -> {
|
||||||
mediaBottomSheetState = MediaBottomSheetState.Hidden
|
mediaBottomSheetState = MediaBottomSheetState.Hidden
|
||||||
navigator.onViewInTimelineClick(event.eventId)
|
navigator.onViewInTimelineClick(event.eventId)
|
||||||
}
|
}
|
||||||
is MediaGalleryEvents.OpenInfo -> coroutineScope.launch {
|
is MediaGalleryEvent.OpenInfo -> coroutineScope.launch {
|
||||||
mediaBottomSheetState = MediaBottomSheetState.MediaDetailsBottomSheetState(
|
mediaBottomSheetState = MediaBottomSheetState.MediaDetailsBottomSheetState(
|
||||||
eventId = event.mediaItem.eventId(),
|
eventId = event.mediaItem.eventId(),
|
||||||
canDelete = when (event.mediaItem.mediaInfo().senderId) {
|
canDelete = when (event.mediaItem.mediaInfo().senderId) {
|
||||||
|
|
@ -143,14 +143,14 @@ class MediaGalleryPresenter(
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
is MediaGalleryEvents.ConfirmDelete -> {
|
is MediaGalleryEvent.ConfirmDelete -> {
|
||||||
mediaBottomSheetState = MediaBottomSheetState.MediaDeleteConfirmationState(
|
mediaBottomSheetState = MediaBottomSheetState.MediaDeleteConfirmationState(
|
||||||
eventId = event.eventId,
|
eventId = event.eventId,
|
||||||
mediaInfo = event.mediaInfo,
|
mediaInfo = event.mediaInfo,
|
||||||
thumbnailSource = event.thumbnailSource,
|
thumbnailSource = event.thumbnailSource,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
MediaGalleryEvents.CloseBottomSheet -> {
|
MediaGalleryEvent.CloseBottomSheet -> {
|
||||||
mediaBottomSheetState = MediaBottomSheetState.Hidden
|
mediaBottomSheetState = MediaBottomSheetState.Hidden
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -20,7 +20,7 @@ data class MediaGalleryState(
|
||||||
val groupedMediaItems: AsyncData<GroupedMediaItems>,
|
val groupedMediaItems: AsyncData<GroupedMediaItems>,
|
||||||
val mediaBottomSheetState: MediaBottomSheetState,
|
val mediaBottomSheetState: MediaBottomSheetState,
|
||||||
val snackbarMessage: SnackbarMessage?,
|
val snackbarMessage: SnackbarMessage?,
|
||||||
val eventSink: (MediaGalleryEvents) -> Unit,
|
val eventSink: (MediaGalleryEvent) -> Unit,
|
||||||
)
|
)
|
||||||
|
|
||||||
enum class MediaGalleryMode(val stringResource: Int) {
|
enum class MediaGalleryMode(val stringResource: Int) {
|
||||||
|
|
|
||||||
|
|
@ -132,7 +132,7 @@ fun MediaGalleryView(
|
||||||
index = mode.ordinal,
|
index = mode.ordinal,
|
||||||
count = MediaGalleryMode.entries.size,
|
count = MediaGalleryMode.entries.size,
|
||||||
selected = state.mode == mode,
|
selected = state.mode == mode,
|
||||||
onClick = { state.eventSink(MediaGalleryEvents.ChangeMode(mode)) },
|
onClick = { state.eventSink(MediaGalleryEvent.ChangeMode(mode)) },
|
||||||
text = stringResource(mode.stringResource),
|
text = stringResource(mode.stringResource),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
@ -162,23 +162,23 @@ fun MediaGalleryView(
|
||||||
MediaDetailsBottomSheet(
|
MediaDetailsBottomSheet(
|
||||||
state = bottomSheetState,
|
state = bottomSheetState,
|
||||||
onViewInTimeline = { eventId ->
|
onViewInTimeline = { eventId ->
|
||||||
state.eventSink(MediaGalleryEvents.ViewInTimeline(eventId))
|
state.eventSink(MediaGalleryEvent.ViewInTimeline(eventId))
|
||||||
},
|
},
|
||||||
onShare = { eventId ->
|
onShare = { eventId ->
|
||||||
state.eventSink(MediaGalleryEvents.Share(eventId))
|
state.eventSink(MediaGalleryEvent.Share(eventId))
|
||||||
},
|
},
|
||||||
onForward = { eventId ->
|
onForward = { eventId ->
|
||||||
state.eventSink(MediaGalleryEvents.Forward(eventId))
|
state.eventSink(MediaGalleryEvent.Forward(eventId))
|
||||||
},
|
},
|
||||||
onDownload = { eventId ->
|
onDownload = { eventId ->
|
||||||
state.eventSink(MediaGalleryEvents.SaveOnDisk(eventId))
|
state.eventSink(MediaGalleryEvent.SaveOnDisk(eventId))
|
||||||
},
|
},
|
||||||
onOpenWith = { eventId ->
|
onOpenWith = { eventId ->
|
||||||
state.eventSink(MediaGalleryEvents.OpenWith(eventId))
|
state.eventSink(MediaGalleryEvent.OpenWith(eventId))
|
||||||
},
|
},
|
||||||
onDelete = { eventId ->
|
onDelete = { eventId ->
|
||||||
state.eventSink(
|
state.eventSink(
|
||||||
MediaGalleryEvents.ConfirmDelete(
|
MediaGalleryEvent.ConfirmDelete(
|
||||||
eventId = eventId,
|
eventId = eventId,
|
||||||
mediaInfo = bottomSheetState.mediaInfo,
|
mediaInfo = bottomSheetState.mediaInfo,
|
||||||
thumbnailSource = bottomSheetState.thumbnailSource,
|
thumbnailSource = bottomSheetState.thumbnailSource,
|
||||||
|
|
@ -186,7 +186,7 @@ fun MediaGalleryView(
|
||||||
)
|
)
|
||||||
},
|
},
|
||||||
onDismiss = {
|
onDismiss = {
|
||||||
state.eventSink(MediaGalleryEvents.CloseBottomSheet)
|
state.eventSink(MediaGalleryEvent.CloseBottomSheet)
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
@ -194,10 +194,10 @@ fun MediaGalleryView(
|
||||||
MediaDeleteConfirmationBottomSheet(
|
MediaDeleteConfirmationBottomSheet(
|
||||||
state = bottomSheetState,
|
state = bottomSheetState,
|
||||||
onDelete = {
|
onDelete = {
|
||||||
state.eventSink(MediaGalleryEvents.Delete(it))
|
state.eventSink(MediaGalleryEvent.Delete(it))
|
||||||
},
|
},
|
||||||
onDismiss = {
|
onDismiss = {
|
||||||
state.eventSink(MediaGalleryEvents.CloseBottomSheet)
|
state.eventSink(MediaGalleryEvent.CloseBottomSheet)
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
@ -216,7 +216,7 @@ private fun MediaGalleryPage(
|
||||||
val loadingItem = groupedMediaItems.dataOrNull()?.getItems(mode)?.singleOrNull() as? MediaItem.LoadingIndicator
|
val loadingItem = groupedMediaItems.dataOrNull()?.getItems(mode)?.singleOrNull() as? MediaItem.LoadingIndicator
|
||||||
if (loadingItem != null) {
|
if (loadingItem != null) {
|
||||||
LaunchedEffect(loadingItem.timestamp) {
|
LaunchedEffect(loadingItem.timestamp) {
|
||||||
state.eventSink(MediaGalleryEvents.LoadMore(loadingItem.direction))
|
state.eventSink(MediaGalleryEvent.LoadMore(loadingItem.direction))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
LoadingContent(mode)
|
LoadingContent(mode)
|
||||||
|
|
@ -261,7 +261,7 @@ private fun AsyncData<GroupedMediaItems>.isLoadingItems(mode: MediaGalleryMode):
|
||||||
@Composable
|
@Composable
|
||||||
private fun MediaGalleryImages(
|
private fun MediaGalleryImages(
|
||||||
imagesAndVideos: ImmutableList<MediaItem>,
|
imagesAndVideos: ImmutableList<MediaItem>,
|
||||||
eventSink: (MediaGalleryEvents) -> Unit,
|
eventSink: (MediaGalleryEvent) -> Unit,
|
||||||
onItemClick: (MediaItem.Event) -> Unit,
|
onItemClick: (MediaItem.Event) -> Unit,
|
||||||
) {
|
) {
|
||||||
if (imagesAndVideos.isEmpty()) {
|
if (imagesAndVideos.isEmpty()) {
|
||||||
|
|
@ -282,7 +282,7 @@ private fun MediaGalleryImages(
|
||||||
@Composable
|
@Composable
|
||||||
private fun MediaGalleryFiles(
|
private fun MediaGalleryFiles(
|
||||||
files: ImmutableList<MediaItem>,
|
files: ImmutableList<MediaItem>,
|
||||||
eventSink: (MediaGalleryEvents) -> Unit,
|
eventSink: (MediaGalleryEvent) -> Unit,
|
||||||
onItemClick: (MediaItem.Event) -> Unit,
|
onItemClick: (MediaItem.Event) -> Unit,
|
||||||
) {
|
) {
|
||||||
if (files.isEmpty()) {
|
if (files.isEmpty()) {
|
||||||
|
|
@ -303,7 +303,7 @@ private fun MediaGalleryFiles(
|
||||||
@Composable
|
@Composable
|
||||||
private fun MediaGalleryFilesList(
|
private fun MediaGalleryFilesList(
|
||||||
files: ImmutableList<MediaItem>,
|
files: ImmutableList<MediaItem>,
|
||||||
eventSink: (MediaGalleryEvents) -> Unit,
|
eventSink: (MediaGalleryEvent) -> Unit,
|
||||||
onItemClick: (MediaItem.Event) -> Unit,
|
onItemClick: (MediaItem.Event) -> Unit,
|
||||||
) {
|
) {
|
||||||
val presenterFactories = LocalMediaItemPresenterFactories.current
|
val presenterFactories = LocalMediaItemPresenterFactories.current
|
||||||
|
|
@ -321,7 +321,7 @@ private fun MediaGalleryFilesList(
|
||||||
file = item,
|
file = item,
|
||||||
onClick = { onItemClick(item) },
|
onClick = { onItemClick(item) },
|
||||||
onLongClick = {
|
onLongClick = {
|
||||||
eventSink(MediaGalleryEvents.OpenInfo(item))
|
eventSink(MediaGalleryEvent.OpenInfo(item))
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
is MediaItem.Audio -> AudioItemView(
|
is MediaItem.Audio -> AudioItemView(
|
||||||
|
|
@ -329,7 +329,7 @@ private fun MediaGalleryFilesList(
|
||||||
audio = item,
|
audio = item,
|
||||||
onClick = { onItemClick(item) },
|
onClick = { onItemClick(item) },
|
||||||
onLongClick = {
|
onLongClick = {
|
||||||
eventSink(MediaGalleryEvents.OpenInfo(item))
|
eventSink(MediaGalleryEvent.OpenInfo(item))
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
is MediaItem.Voice -> {
|
is MediaItem.Voice -> {
|
||||||
|
|
@ -339,7 +339,7 @@ private fun MediaGalleryFilesList(
|
||||||
state = presenter.present(),
|
state = presenter.present(),
|
||||||
voice = item,
|
voice = item,
|
||||||
onLongClick = {
|
onLongClick = {
|
||||||
eventSink(MediaGalleryEvents.OpenInfo(item))
|
eventSink(MediaGalleryEvent.OpenInfo(item))
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
@ -364,7 +364,7 @@ private fun MediaGalleryFilesList(
|
||||||
@Composable
|
@Composable
|
||||||
private fun MediaGalleryImageGrid(
|
private fun MediaGalleryImageGrid(
|
||||||
imagesAndVideos: ImmutableList<MediaItem>,
|
imagesAndVideos: ImmutableList<MediaItem>,
|
||||||
eventSink: (MediaGalleryEvents) -> Unit,
|
eventSink: (MediaGalleryEvent) -> Unit,
|
||||||
onItemClick: (MediaItem.Event) -> Unit,
|
onItemClick: (MediaItem.Event) -> Unit,
|
||||||
) {
|
) {
|
||||||
LazyVerticalGrid(
|
LazyVerticalGrid(
|
||||||
|
|
@ -406,7 +406,7 @@ private fun MediaGalleryImageGrid(
|
||||||
image = item,
|
image = item,
|
||||||
onClick = { onItemClick(item) },
|
onClick = { onItemClick(item) },
|
||||||
onLongClick = {
|
onLongClick = {
|
||||||
eventSink(MediaGalleryEvents.OpenInfo(item))
|
eventSink(MediaGalleryEvent.OpenInfo(item))
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
is MediaItem.Video -> VideoItemView(
|
is MediaItem.Video -> VideoItemView(
|
||||||
|
|
@ -414,7 +414,7 @@ private fun MediaGalleryImageGrid(
|
||||||
video = item,
|
video = item,
|
||||||
onClick = { onItemClick(item) },
|
onClick = { onItemClick(item) },
|
||||||
onLongClick = {
|
onLongClick = {
|
||||||
eventSink(MediaGalleryEvents.OpenInfo(item))
|
eventSink(MediaGalleryEvent.OpenInfo(item))
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
is MediaItem.LoadingIndicator -> LoadingMoreIndicator(
|
is MediaItem.LoadingIndicator -> LoadingMoreIndicator(
|
||||||
|
|
@ -430,7 +430,7 @@ private fun MediaGalleryImageGrid(
|
||||||
@Composable
|
@Composable
|
||||||
private fun LoadingMoreIndicator(
|
private fun LoadingMoreIndicator(
|
||||||
item: MediaItem.LoadingIndicator,
|
item: MediaItem.LoadingIndicator,
|
||||||
eventSink: (MediaGalleryEvents) -> Unit,
|
eventSink: (MediaGalleryEvent) -> Unit,
|
||||||
modifier: Modifier = Modifier
|
modifier: Modifier = Modifier
|
||||||
) {
|
) {
|
||||||
Box(
|
Box(
|
||||||
|
|
@ -455,7 +455,7 @@ private fun LoadingMoreIndicator(
|
||||||
}
|
}
|
||||||
val latestEventSink by rememberUpdatedState(eventSink)
|
val latestEventSink by rememberUpdatedState(eventSink)
|
||||||
LaunchedEffect(item.timestamp) {
|
LaunchedEffect(item.timestamp) {
|
||||||
latestEventSink(MediaGalleryEvents.LoadMore(item.direction))
|
latestEventSink(MediaGalleryEvent.LoadMore(item.direction))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -84,10 +84,10 @@ class MediaGalleryPresenterTest {
|
||||||
presenter.test {
|
presenter.test {
|
||||||
val initialState = awaitFirstItem()
|
val initialState = awaitFirstItem()
|
||||||
assertThat(initialState.mode).isEqualTo(MediaGalleryMode.Images)
|
assertThat(initialState.mode).isEqualTo(MediaGalleryMode.Images)
|
||||||
initialState.eventSink(MediaGalleryEvents.ChangeMode(MediaGalleryMode.Files))
|
initialState.eventSink(MediaGalleryEvent.ChangeMode(MediaGalleryMode.Files))
|
||||||
val state = awaitItem()
|
val state = awaitItem()
|
||||||
assertThat(state.mode).isEqualTo(MediaGalleryMode.Files)
|
assertThat(state.mode).isEqualTo(MediaGalleryMode.Files)
|
||||||
state.eventSink(MediaGalleryEvents.ChangeMode(MediaGalleryMode.Images))
|
state.eventSink(MediaGalleryEvent.ChangeMode(MediaGalleryMode.Images))
|
||||||
val imageModeState = awaitItem()
|
val imageModeState = awaitItem()
|
||||||
assertThat(imageModeState.mode).isEqualTo(MediaGalleryMode.Images)
|
assertThat(imageModeState.mode).isEqualTo(MediaGalleryMode.Images)
|
||||||
}
|
}
|
||||||
|
|
@ -123,7 +123,7 @@ class MediaGalleryPresenterTest {
|
||||||
eventId = AN_EVENT_ID,
|
eventId = AN_EVENT_ID,
|
||||||
senderId = A_USER_ID,
|
senderId = A_USER_ID,
|
||||||
)
|
)
|
||||||
initialState.eventSink(MediaGalleryEvents.OpenInfo(item))
|
initialState.eventSink(MediaGalleryEvent.OpenInfo(item))
|
||||||
val state = awaitItem()
|
val state = awaitItem()
|
||||||
assertThat(state.mediaBottomSheetState).isEqualTo(
|
assertThat(state.mediaBottomSheetState).isEqualTo(
|
||||||
MediaBottomSheetState.MediaDetailsBottomSheetState(
|
MediaBottomSheetState.MediaDetailsBottomSheetState(
|
||||||
|
|
@ -134,7 +134,7 @@ class MediaGalleryPresenterTest {
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
// Close the bottom sheet
|
// Close the bottom sheet
|
||||||
state.eventSink(MediaGalleryEvents.CloseBottomSheet)
|
state.eventSink(MediaGalleryEvent.CloseBottomSheet)
|
||||||
val closedState = awaitItem()
|
val closedState = awaitItem()
|
||||||
assertThat(closedState.mediaBottomSheetState).isEqualTo(MediaBottomSheetState.Hidden)
|
assertThat(closedState.mediaBottomSheetState).isEqualTo(MediaBottomSheetState.Hidden)
|
||||||
}
|
}
|
||||||
|
|
@ -170,7 +170,7 @@ class MediaGalleryPresenterTest {
|
||||||
eventId = AN_EVENT_ID,
|
eventId = AN_EVENT_ID,
|
||||||
senderId = A_USER_ID_2,
|
senderId = A_USER_ID_2,
|
||||||
)
|
)
|
||||||
initialState.eventSink(MediaGalleryEvents.OpenInfo(item))
|
initialState.eventSink(MediaGalleryEvent.OpenInfo(item))
|
||||||
val state = awaitItem()
|
val state = awaitItem()
|
||||||
assertThat(state.mediaBottomSheetState).isEqualTo(
|
assertThat(state.mediaBottomSheetState).isEqualTo(
|
||||||
MediaBottomSheetState.MediaDetailsBottomSheetState(
|
MediaBottomSheetState.MediaDetailsBottomSheetState(
|
||||||
|
|
@ -181,7 +181,7 @@ class MediaGalleryPresenterTest {
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
// Close the bottom sheet
|
// Close the bottom sheet
|
||||||
state.eventSink(MediaGalleryEvents.CloseBottomSheet)
|
state.eventSink(MediaGalleryEvent.CloseBottomSheet)
|
||||||
val closedState = awaitItem()
|
val closedState = awaitItem()
|
||||||
assertThat(closedState.mediaBottomSheetState).isEqualTo(MediaBottomSheetState.Hidden)
|
assertThat(closedState.mediaBottomSheetState).isEqualTo(MediaBottomSheetState.Hidden)
|
||||||
}
|
}
|
||||||
|
|
@ -199,7 +199,7 @@ class MediaGalleryPresenterTest {
|
||||||
val initialState = awaitFirstItem()
|
val initialState = awaitFirstItem()
|
||||||
// Delete bottom sheet
|
// Delete bottom sheet
|
||||||
val item = aMediaItemImage()
|
val item = aMediaItemImage()
|
||||||
initialState.eventSink(MediaGalleryEvents.ConfirmDelete(AN_EVENT_ID, item.mediaInfo, item.thumbnailSource))
|
initialState.eventSink(MediaGalleryEvent.ConfirmDelete(AN_EVENT_ID, item.mediaInfo, item.thumbnailSource))
|
||||||
val deleteState = awaitItem()
|
val deleteState = awaitItem()
|
||||||
assertThat(deleteState.mediaBottomSheetState).isEqualTo(
|
assertThat(deleteState.mediaBottomSheetState).isEqualTo(
|
||||||
MediaBottomSheetState.MediaDeleteConfirmationState(
|
MediaBottomSheetState.MediaDeleteConfirmationState(
|
||||||
|
|
@ -209,7 +209,7 @@ class MediaGalleryPresenterTest {
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
// Close the bottom sheet
|
// Close the bottom sheet
|
||||||
deleteState.eventSink(MediaGalleryEvents.CloseBottomSheet)
|
deleteState.eventSink(MediaGalleryEvent.CloseBottomSheet)
|
||||||
val deleteClosedState = awaitItem()
|
val deleteClosedState = awaitItem()
|
||||||
assertThat(deleteClosedState.mediaBottomSheetState).isEqualTo(MediaBottomSheetState.Hidden)
|
assertThat(deleteClosedState.mediaBottomSheetState).isEqualTo(MediaBottomSheetState.Hidden)
|
||||||
}
|
}
|
||||||
|
|
@ -226,7 +226,7 @@ class MediaGalleryPresenterTest {
|
||||||
)
|
)
|
||||||
presenter.test {
|
presenter.test {
|
||||||
val initialState = awaitFirstItem()
|
val initialState = awaitFirstItem()
|
||||||
initialState.eventSink(MediaGalleryEvents.Delete(AN_EVENT_ID))
|
initialState.eventSink(MediaGalleryEvent.Delete(AN_EVENT_ID))
|
||||||
deleteItemLambda.assertions().isCalledOnce().with(value(AN_EVENT_ID))
|
deleteItemLambda.assertions().isCalledOnce().with(value(AN_EVENT_ID))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -236,7 +236,7 @@ class MediaGalleryPresenterTest {
|
||||||
val presenter = createMediaGalleryPresenter()
|
val presenter = createMediaGalleryPresenter()
|
||||||
presenter.test {
|
presenter.test {
|
||||||
val initialState = awaitFirstItem()
|
val initialState = awaitFirstItem()
|
||||||
initialState.eventSink(MediaGalleryEvents.Share(AN_EVENT_ID))
|
initialState.eventSink(MediaGalleryEvent.Share(AN_EVENT_ID))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -258,7 +258,7 @@ class MediaGalleryPresenterTest {
|
||||||
)
|
)
|
||||||
presenter.test {
|
presenter.test {
|
||||||
val initialState = awaitFirstItem()
|
val initialState = awaitFirstItem()
|
||||||
initialState.eventSink(MediaGalleryEvents.Share(AN_EVENT_ID))
|
initialState.eventSink(MediaGalleryEvent.Share(AN_EVENT_ID))
|
||||||
val finalState = awaitItem()
|
val finalState = awaitItem()
|
||||||
assertThat(finalState.snackbarMessage).isNull()
|
assertThat(finalState.snackbarMessage).isNull()
|
||||||
}
|
}
|
||||||
|
|
@ -283,7 +283,7 @@ class MediaGalleryPresenterTest {
|
||||||
)
|
)
|
||||||
presenter.test {
|
presenter.test {
|
||||||
val initialState = awaitFirstItem()
|
val initialState = awaitFirstItem()
|
||||||
initialState.eventSink(MediaGalleryEvents.Share(AN_EVENT_ID))
|
initialState.eventSink(MediaGalleryEvent.Share(AN_EVENT_ID))
|
||||||
skipItems(1)
|
skipItems(1)
|
||||||
val finalState = awaitItem()
|
val finalState = awaitItem()
|
||||||
assertThat(finalState.snackbarMessage).isInstanceOf(SnackbarMessage::class.java)
|
assertThat(finalState.snackbarMessage).isInstanceOf(SnackbarMessage::class.java)
|
||||||
|
|
@ -295,7 +295,7 @@ class MediaGalleryPresenterTest {
|
||||||
val presenter = createMediaGalleryPresenter()
|
val presenter = createMediaGalleryPresenter()
|
||||||
presenter.test {
|
presenter.test {
|
||||||
val initialState = awaitFirstItem()
|
val initialState = awaitFirstItem()
|
||||||
initialState.eventSink(MediaGalleryEvents.SaveOnDisk(AN_EVENT_ID))
|
initialState.eventSink(MediaGalleryEvent.SaveOnDisk(AN_EVENT_ID))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -317,7 +317,7 @@ class MediaGalleryPresenterTest {
|
||||||
)
|
)
|
||||||
presenter.test {
|
presenter.test {
|
||||||
val initialState = awaitFirstItem()
|
val initialState = awaitFirstItem()
|
||||||
initialState.eventSink(MediaGalleryEvents.SaveOnDisk(AN_EVENT_ID))
|
initialState.eventSink(MediaGalleryEvent.SaveOnDisk(AN_EVENT_ID))
|
||||||
skipItems(1)
|
skipItems(1)
|
||||||
val finalState = awaitItem()
|
val finalState = awaitItem()
|
||||||
assertThat(finalState.snackbarMessage?.messageResId).isEqualTo(CommonStrings.common_file_saved_on_disk_android)
|
assertThat(finalState.snackbarMessage?.messageResId).isEqualTo(CommonStrings.common_file_saved_on_disk_android)
|
||||||
|
|
@ -343,7 +343,7 @@ class MediaGalleryPresenterTest {
|
||||||
)
|
)
|
||||||
presenter.test {
|
presenter.test {
|
||||||
val initialState = awaitFirstItem()
|
val initialState = awaitFirstItem()
|
||||||
initialState.eventSink(MediaGalleryEvents.SaveOnDisk(AN_EVENT_ID))
|
initialState.eventSink(MediaGalleryEvent.SaveOnDisk(AN_EVENT_ID))
|
||||||
skipItems(1)
|
skipItems(1)
|
||||||
val finalState = awaitItem()
|
val finalState = awaitItem()
|
||||||
assertThat(finalState.snackbarMessage).isInstanceOf(SnackbarMessage::class.java)
|
assertThat(finalState.snackbarMessage).isInstanceOf(SnackbarMessage::class.java)
|
||||||
|
|
@ -373,10 +373,10 @@ class MediaGalleryPresenterTest {
|
||||||
eventId = AN_EVENT_ID,
|
eventId = AN_EVENT_ID,
|
||||||
senderId = A_USER_ID,
|
senderId = A_USER_ID,
|
||||||
)
|
)
|
||||||
initialState.eventSink(MediaGalleryEvents.OpenInfo(item))
|
initialState.eventSink(MediaGalleryEvent.OpenInfo(item))
|
||||||
val withBottomSheetState = awaitItem()
|
val withBottomSheetState = awaitItem()
|
||||||
assertThat(withBottomSheetState.mediaBottomSheetState).isInstanceOf(MediaBottomSheetState.MediaDetailsBottomSheetState::class.java)
|
assertThat(withBottomSheetState.mediaBottomSheetState).isInstanceOf(MediaBottomSheetState.MediaDetailsBottomSheetState::class.java)
|
||||||
withBottomSheetState.eventSink(MediaGalleryEvents.ViewInTimeline(AN_EVENT_ID))
|
withBottomSheetState.eventSink(MediaGalleryEvent.ViewInTimeline(AN_EVENT_ID))
|
||||||
val finalState = awaitItem()
|
val finalState = awaitItem()
|
||||||
assertThat(finalState.mediaBottomSheetState).isEqualTo(MediaBottomSheetState.Hidden)
|
assertThat(finalState.mediaBottomSheetState).isEqualTo(MediaBottomSheetState.Hidden)
|
||||||
onViewInTimelineClickLambda.assertions().isCalledOnce().with(value(AN_EVENT_ID))
|
onViewInTimelineClickLambda.assertions().isCalledOnce().with(value(AN_EVENT_ID))
|
||||||
|
|
@ -406,10 +406,10 @@ class MediaGalleryPresenterTest {
|
||||||
eventId = AN_EVENT_ID,
|
eventId = AN_EVENT_ID,
|
||||||
senderId = A_USER_ID,
|
senderId = A_USER_ID,
|
||||||
)
|
)
|
||||||
initialState.eventSink(MediaGalleryEvents.OpenInfo(item))
|
initialState.eventSink(MediaGalleryEvent.OpenInfo(item))
|
||||||
val withBottomSheetState = awaitItem()
|
val withBottomSheetState = awaitItem()
|
||||||
assertThat(withBottomSheetState.mediaBottomSheetState).isInstanceOf(MediaBottomSheetState.MediaDetailsBottomSheetState::class.java)
|
assertThat(withBottomSheetState.mediaBottomSheetState).isInstanceOf(MediaBottomSheetState.MediaDetailsBottomSheetState::class.java)
|
||||||
withBottomSheetState.eventSink(MediaGalleryEvents.Forward(AN_EVENT_ID))
|
withBottomSheetState.eventSink(MediaGalleryEvent.Forward(AN_EVENT_ID))
|
||||||
val finalState = awaitItem()
|
val finalState = awaitItem()
|
||||||
assertThat(finalState.mediaBottomSheetState).isEqualTo(MediaBottomSheetState.Hidden)
|
assertThat(finalState.mediaBottomSheetState).isEqualTo(MediaBottomSheetState.Hidden)
|
||||||
onForwardClickLambda.assertions().isCalledOnce().with(value(AN_EVENT_ID))
|
onForwardClickLambda.assertions().isCalledOnce().with(value(AN_EVENT_ID))
|
||||||
|
|
@ -427,7 +427,7 @@ class MediaGalleryPresenterTest {
|
||||||
)
|
)
|
||||||
presenter.test {
|
presenter.test {
|
||||||
val initialState = awaitFirstItem()
|
val initialState = awaitFirstItem()
|
||||||
initialState.eventSink(MediaGalleryEvents.LoadMore(Timeline.PaginationDirection.BACKWARDS))
|
initialState.eventSink(MediaGalleryEvent.LoadMore(Timeline.PaginationDirection.BACKWARDS))
|
||||||
loadMoreLambda.assertions().isCalledOnce().with(value(Timeline.PaginationDirection.BACKWARDS))
|
loadMoreLambda.assertions().isCalledOnce().with(value(Timeline.PaginationDirection.BACKWARDS))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue