From d079f85eca99f9b87cbee71633bb9962158a5aaa Mon Sep 17 00:00:00 2001 From: Alex Hart Date: Fri, 14 Apr 2023 15:14:58 -0300 Subject: [PATCH] Add GiphyMp4 controller to V2 Conversation Fragment. --- .../conversation/v2/ConversationFragment.kt | 24 +++++++++++++++++++ .../res/layout/v2_conversation_fragment.xml | 9 +++++++ 2 files changed, 33 insertions(+) diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationFragment.kt index df599eb4bb..34a8aa8d85 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationFragment.kt @@ -48,6 +48,11 @@ import org.thoughtcrime.securesms.database.model.InMemoryMessageRecord import org.thoughtcrime.securesms.database.model.MessageRecord import org.thoughtcrime.securesms.database.model.MmsMessageRecord import org.thoughtcrime.securesms.databinding.V2ConversationFragmentBinding +import org.thoughtcrime.securesms.giph.mp4.GiphyMp4ItemDecoration +import org.thoughtcrime.securesms.giph.mp4.GiphyMp4PlaybackController +import org.thoughtcrime.securesms.giph.mp4.GiphyMp4PlaybackPolicy +import org.thoughtcrime.securesms.giph.mp4.GiphyMp4ProjectionPlayerHolder +import org.thoughtcrime.securesms.giph.mp4.GiphyMp4ProjectionRecycler import org.thoughtcrime.securesms.groups.GroupId import org.thoughtcrime.securesms.groups.GroupMigrationMembershipChange import org.thoughtcrime.securesms.invites.InviteActions @@ -178,6 +183,7 @@ class ConversationFragment : LoggingFragment(R.layout.v2_conversation_fragment) adapter.setPagingController(viewModel.pagingController) viewLifecycleOwner.lifecycle.addObserver(LastSeenPositionUpdater(adapter, layoutManager, viewModel)) binding.conversationItemRecycler.adapter = adapter + initializeGiphyMp4() binding.conversationItemRecycler.addItemDecoration( MultiselectItemDecoration( @@ -292,6 +298,24 @@ class ConversationFragment : LoggingFragment(R.layout.v2_conversation_fragment) private fun getVoiceNoteMediaController() = requireListener().voiceNoteMediaController + private fun initializeGiphyMp4(): GiphyMp4ProjectionRecycler { + val maxPlayback = GiphyMp4PlaybackPolicy.maxSimultaneousPlaybackInConversation() + val holders = GiphyMp4ProjectionPlayerHolder.injectVideoViews( + requireContext(), + viewLifecycleOwner.lifecycle, + binding.conversationVideoContainer, + maxPlayback + ) + + val callback = GiphyMp4ProjectionRecycler(holders) + GiphyMp4PlaybackController.attach(binding.conversationItemRecycler, callback, maxPlayback) + binding.conversationItemRecycler.addItemDecoration(GiphyMp4ItemDecoration(callback) { translationY: Float -> + // TODO [alex] reactionsShade.setTranslationY(translationY + list.getHeight()) + }, 0) + return callback + } + + private inner class ConversationItemClickListener : ConversationAdapter.ItemClickListener { override fun onQuoteClicked(messageRecord: MmsMessageRecord?) { // TODO [alex] - ("Not yet implemented") diff --git a/app/src/main/res/layout/v2_conversation_fragment.xml b/app/src/main/res/layout/v2_conversation_fragment.xml index 1ffc0348f8..b33e5139d2 100644 --- a/app/src/main/res/layout/v2_conversation_fragment.xml +++ b/app/src/main/res/layout/v2_conversation_fragment.xml @@ -5,6 +5,15 @@ android:layout_width="match_parent" android:layout_height="match_parent"> + +