diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationItem.java b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationItem.java index f8dc9f066d..c7079f6b29 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationItem.java +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationItem.java @@ -2331,6 +2331,7 @@ public final class ConversationItem extends RelativeLayout implements BindableCo false, false, false, + false, MediaDatabase.Sorting.Newest.ordinal(), slide.isVideoGif()); context.startActivity(MediaIntentFactory.create(context, args)); diff --git a/app/src/main/java/org/thoughtcrime/securesms/mediaoverview/MediaOverviewPageFragment.java b/app/src/main/java/org/thoughtcrime/securesms/mediaoverview/MediaOverviewPageFragment.java index ebc41f7b0e..e9c07a734f 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/mediaoverview/MediaOverviewPageFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/mediaoverview/MediaOverviewPageFragment.java @@ -247,6 +247,7 @@ public final class MediaOverviewPageFragment extends Fragment true, true, threadId == MediaDatabase.ALL_THREADS, + true, sorting.ordinal(), attachment.isVideoGif()); context.startActivity(MediaIntentFactory.create(context, args)); diff --git a/app/src/main/java/org/thoughtcrime/securesms/mediapreview/MediaIntentFactory.kt b/app/src/main/java/org/thoughtcrime/securesms/mediapreview/MediaIntentFactory.kt index 1ecff88560..129de80d55 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/mediapreview/MediaIntentFactory.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/mediapreview/MediaIntentFactory.kt @@ -35,6 +35,7 @@ object MediaIntentFactory { val leftIsRecent: Boolean = false, val hideAllMedia: Boolean = false, val showThread: Boolean = false, + val allMediaInRail: Boolean = false, val sorting: Int, val isVideoGif: Boolean ) : Parcelable diff --git a/app/src/main/java/org/thoughtcrime/securesms/mediapreview/MediaPreviewV2Fragment.kt b/app/src/main/java/org/thoughtcrime/securesms/mediapreview/MediaPreviewV2Fragment.kt index be2dd3fa60..a68bd68220 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/mediapreview/MediaPreviewV2Fragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/mediapreview/MediaPreviewV2Fragment.kt @@ -141,6 +141,7 @@ class MediaPreviewV2Fragment : Fragment(R.layout.fragment_media_preview_v2), Med }.show() } viewModel.setShowThread(args.showThread) + viewModel.setAlwaysShowAlbumRail(args.allMediaInRail) val sorting = MediaDatabase.Sorting.values()[args.sorting] viewModel.fetchAttachments(PartAuthority.requireAttachmentId(args.initialMediaUri), args.threadId, sorting) } @@ -198,9 +199,13 @@ class MediaPreviewV2Fragment : Fragment(R.layout.fragment_media_preview_v2), Med val currentItem: MediaDatabase.MediaRecord = currentState.mediaRecords[currentState.position] val currentFragment: Fragment? = childFragmentManager.findFragmentByTag("f${currentState.position}") val playbackControls = (currentFragment as? MediaPreviewFragment)?.playbackControls - val albumThumbnailMedia = currentState.mediaRecords - .filter { it.attachment != null && it.attachment!!.mmsId == currentItem.attachment?.mmsId } - .map { it.toMedia() } + val albumThumbnailMedia = if (currentState.allMediaInAlbumRail) { + currentState.mediaRecords.map { it.toMedia() } + } else { + currentState.mediaRecords + .filter { it.attachment != null && it.attachment!!.mmsId == currentItem.attachment?.mmsId } + .map { it.toMedia() } + } val caption = currentItem.attachment?.caption if (albumThumbnailMedia.size <= 1 && caption == null && playbackControls == null) { binding.mediaPreviewDetailsContainer.visibility = View.GONE diff --git a/app/src/main/java/org/thoughtcrime/securesms/mediapreview/MediaPreviewV2State.kt b/app/src/main/java/org/thoughtcrime/securesms/mediapreview/MediaPreviewV2State.kt index bf91f819d0..94056eabf7 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/mediapreview/MediaPreviewV2State.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/mediapreview/MediaPreviewV2State.kt @@ -6,7 +6,8 @@ data class MediaPreviewV2State( val mediaRecords: List = emptyList(), val loadState: LoadState = LoadState.INIT, val position: Int = 0, - val showThread: Boolean = false + val showThread: Boolean = false, + val allMediaInAlbumRail: Boolean = false ) { enum class LoadState { INIT, READY, LOADED } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/mediapreview/MediaPreviewV2ViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/mediapreview/MediaPreviewV2ViewModel.kt index 0ab965bc69..970464cea1 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/mediapreview/MediaPreviewV2ViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/mediapreview/MediaPreviewV2ViewModel.kt @@ -41,6 +41,12 @@ class MediaPreviewV2ViewModel : ViewModel() { } } + fun setAlwaysShowAlbumRail(value: Boolean) { + store.update { oldState -> + oldState.copy(allMediaInAlbumRail = value) + } + } + fun setCurrentPage(position: Int) { store.update { oldState -> oldState.copy(position = position, loadState = MediaPreviewV2State.LoadState.LOADED) diff --git a/app/src/main/java/org/thoughtcrime/securesms/mms/AttachmentManager.java b/app/src/main/java/org/thoughtcrime/securesms/mms/AttachmentManager.java index 2e7adbea06..092f6b92f7 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/mms/AttachmentManager.java +++ b/app/src/main/java/org/thoughtcrime/securesms/mms/AttachmentManager.java @@ -481,6 +481,7 @@ public class AttachmentManager { false, false, false, + false, MediaDatabase.Sorting.Newest.ordinal(), slide.isVideoGif()); context.startActivity(MediaIntentFactory.create(context, args));