Multiple skin tones for reaction bursts.

This commit is contained in:
Nicholas Tinsley
2024-04-24 14:41:01 -04:00
committed by Greyson Parrelli
parent fa32b7a883
commit 00a91e32fc
5 changed files with 11 additions and 10 deletions

View File

@@ -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)
}
}

View File

@@ -122,7 +122,7 @@ class StoryGroupReplyBottomSheetDialogFragment : FixedRoundedCornerBottomSheetDi
}
override fun onReactionEmojiSelected(emoji: String) {
reactionView.playForEmoji(emoji)
reactionView.playForEmoji(listOf(emoji))
}
companion object {

View File

@@ -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
}
}

View File

@@ -32,7 +32,7 @@ class OnReactionSentView @JvmOverloads constructor(
})
}
fun playForEmoji(emoji: CharSequence) {
fun playForEmoji(emojis: List<CharSequence>) {
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<EmojiImageView>(it).setImageEmoji(emoji)
).forEachIndexed { index, it ->
val emojiIndex = index % emojis.size
findViewById<EmojiImageView>(it).setImageEmoji(emojis[emojiIndex])
}
motionLayout.requestLayout()

View File

@@ -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() {