diff --git a/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/page/StoryViewerPageFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/page/StoryViewerPageFragment.kt index aa92ca3dc7..b74bedfe31 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/page/StoryViewerPageFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/page/StoryViewerPageFragment.kt @@ -498,7 +498,7 @@ class StoryViewerPageFragment : childFragmentManager.setFragmentResultListener(StoryDirectReplyDialogFragment.REQUEST_EMOJI, viewLifecycleOwner) { _, bundle -> val emoji = bundle.getString(StoryDirectReplyDialogFragment.REQUEST_EMOJI) if (emoji != null) { - reactionAnimationView.playForEmoji(emoji) + reactionAnimationView.playForEmoji(listOf(emoji)) viewModel.setIsDisplayingReactionAnimation(true) } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/reply/group/StoryGroupReplyBottomSheetDialogFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/reply/group/StoryGroupReplyBottomSheetDialogFragment.kt index e5734e3cd3..c00dc10bed 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/reply/group/StoryGroupReplyBottomSheetDialogFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/reply/group/StoryGroupReplyBottomSheetDialogFragment.kt @@ -122,7 +122,7 @@ class StoryGroupReplyBottomSheetDialogFragment : FixedRoundedCornerBottomSheetDi } override fun onReactionEmojiSelected(emoji: String) { - reactionView.playForEmoji(emoji) + reactionView.playForEmoji(listOf(emoji)) } companion object { diff --git a/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/reply/reaction/MultiReactionBurstLayout.kt b/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/reply/reaction/MultiReactionBurstLayout.kt index 2b366eafc9..5318d312b5 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/reply/reaction/MultiReactionBurstLayout.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/reply/reaction/MultiReactionBurstLayout.kt @@ -47,13 +47,13 @@ class MultiReactionBurstLayout @JvmOverloads constructor( .filter { it.value.groupBy { event -> event.sender }.size >= REACTION_COUNT_THRESHOLD } .values .map { it.sortedBy { event -> event.timestamp } } - .map { it[REACTION_COUNT_THRESHOLD - 1] } - .sortedBy { it.timestamp } + .sortedBy { it.last().timestamp } .take(MAX_SIMULTANEOUS_REACTIONS - cooldownTimes.filter { it.value > System.currentTimeMillis() }.size) .forEach { val reactionView = getNextReactionView() - reactionView.playForEmoji(it.reaction) - cooldownTimes[EmojiUtil.getCanonicalRepresentation(it.reaction)] = it.timestamp + cooldownDuration.inWholeMilliseconds + reactionView.playForEmoji(it.map { event -> event.reaction }) + val lastEvent = it.last() + cooldownTimes[EmojiUtil.getCanonicalRepresentation(lastEvent.reaction)] = lastEvent.timestamp + cooldownDuration.inWholeMilliseconds } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/reply/reaction/OnReactionSentView.kt b/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/reply/reaction/OnReactionSentView.kt index 074b8362c4..a79f29f05b 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/reply/reaction/OnReactionSentView.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/reply/reaction/OnReactionSentView.kt @@ -32,7 +32,7 @@ class OnReactionSentView @JvmOverloads constructor( }) } - fun playForEmoji(emoji: CharSequence) { + fun playForEmoji(emojis: List) { motionLayout.progress = 0f listOf( @@ -47,8 +47,9 @@ class OnReactionSentView @JvmOverloads constructor( R.id.emoji_9, R.id.emoji_10, R.id.emoji_11 - ).forEach { - findViewById(it).setImageEmoji(emoji) + ).forEachIndexed { index, it -> + val emojiIndex = index % emojis.size + findViewById(it).setImageEmoji(emojis[emojiIndex]) } motionLayout.requestLayout() diff --git a/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/reply/tabs/StoryViewsAndRepliesDialogFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/reply/tabs/StoryViewsAndRepliesDialogFragment.kt index e536683c5e..88d520c1d8 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/reply/tabs/StoryViewsAndRepliesDialogFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/reply/tabs/StoryViewsAndRepliesDialogFragment.kt @@ -159,7 +159,7 @@ class StoryViewsAndRepliesDialogFragment : FixedRoundedCornerBottomSheetDialogFr } override fun onReactionEmojiSelected(emoji: String) { - reactionView.playForEmoji(emoji) + reactionView.playForEmoji(listOf(emoji)) } private inner class PageChangeCallback : ViewPager2.OnPageChangeCallback() {