Add reactions overlay to reply bottom sheets.
This commit is contained in:
parent
b183a38f3c
commit
c0f00eff25
3 changed files with 27 additions and 0 deletions
|
@ -5,6 +5,7 @@ import android.os.Bundle
|
|||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.widget.FrameLayout
|
||||
import androidx.core.view.updateLayoutParams
|
||||
import androidx.fragment.app.DialogFragment
|
||||
import androidx.fragment.app.viewModels
|
||||
|
@ -15,6 +16,7 @@ import org.thoughtcrime.securesms.components.FixedRoundedCornerBottomSheetDialog
|
|||
import org.thoughtcrime.securesms.recipients.RecipientId
|
||||
import org.thoughtcrime.securesms.stories.viewer.page.StoryViewerPageViewModel
|
||||
import org.thoughtcrime.securesms.stories.viewer.reply.BottomSheetBehaviorDelegate
|
||||
import org.thoughtcrime.securesms.stories.viewer.reply.reaction.OnReactionSentView
|
||||
import org.thoughtcrime.securesms.util.BottomSheetUtil.requireCoordinatorLayout
|
||||
import org.thoughtcrime.securesms.util.LifecycleDisposable
|
||||
import kotlin.math.min
|
||||
|
@ -46,6 +48,8 @@ class StoryGroupReplyBottomSheetDialogFragment : FixedRoundedCornerBottomSheetDi
|
|||
private var shouldShowFullScreen = false
|
||||
private var initialParentHeight = 0
|
||||
|
||||
private lateinit var reactionView: OnReactionSentView
|
||||
|
||||
private val storyViewerPageViewModel: StoryViewerPageViewModel by viewModels(
|
||||
ownerProducer = { requireParentFragment() }
|
||||
)
|
||||
|
@ -62,6 +66,10 @@ class StoryGroupReplyBottomSheetDialogFragment : FixedRoundedCornerBottomSheetDi
|
|||
.commitAllowingStateLoss()
|
||||
}
|
||||
|
||||
reactionView = OnReactionSentView(requireContext())
|
||||
val container = view.rootView.findViewById<FrameLayout>(R.id.container)
|
||||
container.addView(reactionView)
|
||||
|
||||
val bottomSheetBehavior = (requireDialog() as BottomSheetDialog).behavior
|
||||
bottomSheetBehavior.addBottomSheetCallback(object : BottomSheetBehavior.BottomSheetCallback() {
|
||||
override fun onStateChanged(bottomSheet: View, newState: Int) = Unit
|
||||
|
@ -112,6 +120,10 @@ class StoryGroupReplyBottomSheetDialogFragment : FixedRoundedCornerBottomSheetDi
|
|||
requireView().invalidate()
|
||||
}
|
||||
|
||||
override fun onReactionEmojiSelected(emoji: String) {
|
||||
reactionView.playForEmoji(emoji)
|
||||
}
|
||||
|
||||
companion object {
|
||||
private const val ARG_STORY_ID = "arg.story.id"
|
||||
private const val ARG_GROUP_RECIPIENT_ID = "arg.group.recipient.id"
|
||||
|
|
|
@ -348,6 +348,7 @@ class StoryGroupReplyFragment :
|
|||
|
||||
override fun onReactionSelected(emoji: String) {
|
||||
dialog.dismiss()
|
||||
findListener<Callback>()?.onReactionEmojiSelected(emoji)
|
||||
sendReaction(emoji)
|
||||
}
|
||||
|
||||
|
@ -541,5 +542,6 @@ class StoryGroupReplyFragment :
|
|||
interface Callback {
|
||||
fun onStartDirectReply(recipientId: RecipientId)
|
||||
fun requestFullScreen(fullscreen: Boolean)
|
||||
fun onReactionEmojiSelected(emoji: String)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -5,6 +5,7 @@ import android.os.Bundle
|
|||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.widget.FrameLayout
|
||||
import androidx.core.view.ViewCompat
|
||||
import androidx.core.view.updateLayoutParams
|
||||
import androidx.fragment.app.DialogFragment
|
||||
|
@ -17,11 +18,13 @@ import com.google.android.material.tabs.TabLayoutMediator
|
|||
import org.thoughtcrime.securesms.R
|
||||
import org.thoughtcrime.securesms.components.FixedRoundedCornerBottomSheetDialogFragment
|
||||
import org.thoughtcrime.securesms.recipients.RecipientId
|
||||
import org.thoughtcrime.securesms.stories.viewer.page.StoryViewerPageFragment
|
||||
import org.thoughtcrime.securesms.stories.viewer.page.StoryViewerPageViewModel
|
||||
import org.thoughtcrime.securesms.stories.viewer.reply.BottomSheetBehaviorDelegate
|
||||
import org.thoughtcrime.securesms.stories.viewer.reply.StoryViewsAndRepliesPagerChild
|
||||
import org.thoughtcrime.securesms.stories.viewer.reply.StoryViewsAndRepliesPagerParent
|
||||
import org.thoughtcrime.securesms.stories.viewer.reply.group.StoryGroupReplyFragment
|
||||
import org.thoughtcrime.securesms.stories.viewer.reply.reaction.OnReactionSentView
|
||||
import org.thoughtcrime.securesms.util.BottomSheetUtil.requireCoordinatorLayout
|
||||
import org.thoughtcrime.securesms.util.LifecycleDisposable
|
||||
import kotlin.math.min
|
||||
|
@ -67,6 +70,8 @@ class StoryViewsAndRepliesDialogFragment : FixedRoundedCornerBottomSheetDialogFr
|
|||
private val onPageChangeCallback = PageChangeCallback()
|
||||
private val lifecycleDisposable = LifecycleDisposable()
|
||||
|
||||
private lateinit var reactionView: OnReactionSentView
|
||||
|
||||
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
|
||||
return inflater.inflate(R.layout.stories_views_and_replies_fragment, container, false)
|
||||
}
|
||||
|
@ -74,6 +79,10 @@ class StoryViewsAndRepliesDialogFragment : FixedRoundedCornerBottomSheetDialogFr
|
|||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
pager = view.findViewById(R.id.pager)
|
||||
|
||||
reactionView = OnReactionSentView(requireContext())
|
||||
val container = pager.rootView.findViewById<FrameLayout>(R.id.container)
|
||||
container.addView(reactionView)
|
||||
|
||||
val bottomSheetBehavior = (requireDialog() as BottomSheetDialog).behavior
|
||||
bottomSheetBehavior.addBottomSheetCallback(object : BottomSheetBehavior.BottomSheetCallback() {
|
||||
override fun onStateChanged(bottomSheet: View, newState: Int) = Unit
|
||||
|
@ -149,6 +158,10 @@ class StoryViewsAndRepliesDialogFragment : FixedRoundedCornerBottomSheetDialogFr
|
|||
requireView().invalidate()
|
||||
}
|
||||
|
||||
override fun onReactionEmojiSelected(emoji: String) {
|
||||
reactionView.playForEmoji(emoji)
|
||||
}
|
||||
|
||||
private inner class PageChangeCallback : ViewPager2.OnPageChangeCallback() {
|
||||
override fun onPageScrollStateChanged(state: Int) {
|
||||
if (state == ViewPager2.SCROLL_STATE_IDLE) {
|
||||
|
|
Loading…
Add table
Reference in a new issue