mirror of
https://github.com/signalapp/Signal-Android.git
synced 2025-12-23 12:38:33 +00:00
Multiple skin tones for reaction bursts.
This commit is contained in:
committed by
Greyson Parrelli
parent
fa32b7a883
commit
00a91e32fc
@@ -498,7 +498,7 @@ class StoryViewerPageFragment :
|
|||||||
childFragmentManager.setFragmentResultListener(StoryDirectReplyDialogFragment.REQUEST_EMOJI, viewLifecycleOwner) { _, bundle ->
|
childFragmentManager.setFragmentResultListener(StoryDirectReplyDialogFragment.REQUEST_EMOJI, viewLifecycleOwner) { _, bundle ->
|
||||||
val emoji = bundle.getString(StoryDirectReplyDialogFragment.REQUEST_EMOJI)
|
val emoji = bundle.getString(StoryDirectReplyDialogFragment.REQUEST_EMOJI)
|
||||||
if (emoji != null) {
|
if (emoji != null) {
|
||||||
reactionAnimationView.playForEmoji(emoji)
|
reactionAnimationView.playForEmoji(listOf(emoji))
|
||||||
viewModel.setIsDisplayingReactionAnimation(true)
|
viewModel.setIsDisplayingReactionAnimation(true)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -122,7 +122,7 @@ class StoryGroupReplyBottomSheetDialogFragment : FixedRoundedCornerBottomSheetDi
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun onReactionEmojiSelected(emoji: String) {
|
override fun onReactionEmojiSelected(emoji: String) {
|
||||||
reactionView.playForEmoji(emoji)
|
reactionView.playForEmoji(listOf(emoji))
|
||||||
}
|
}
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
|
|||||||
@@ -47,13 +47,13 @@ class MultiReactionBurstLayout @JvmOverloads constructor(
|
|||||||
.filter { it.value.groupBy { event -> event.sender }.size >= REACTION_COUNT_THRESHOLD }
|
.filter { it.value.groupBy { event -> event.sender }.size >= REACTION_COUNT_THRESHOLD }
|
||||||
.values
|
.values
|
||||||
.map { it.sortedBy { event -> event.timestamp } }
|
.map { it.sortedBy { event -> event.timestamp } }
|
||||||
.map { it[REACTION_COUNT_THRESHOLD - 1] }
|
.sortedBy { it.last().timestamp }
|
||||||
.sortedBy { it.timestamp }
|
|
||||||
.take(MAX_SIMULTANEOUS_REACTIONS - cooldownTimes.filter { it.value > System.currentTimeMillis() }.size)
|
.take(MAX_SIMULTANEOUS_REACTIONS - cooldownTimes.filter { it.value > System.currentTimeMillis() }.size)
|
||||||
.forEach {
|
.forEach {
|
||||||
val reactionView = getNextReactionView()
|
val reactionView = getNextReactionView()
|
||||||
reactionView.playForEmoji(it.reaction)
|
reactionView.playForEmoji(it.map { event -> event.reaction })
|
||||||
cooldownTimes[EmojiUtil.getCanonicalRepresentation(it.reaction)] = it.timestamp + cooldownDuration.inWholeMilliseconds
|
val lastEvent = it.last()
|
||||||
|
cooldownTimes[EmojiUtil.getCanonicalRepresentation(lastEvent.reaction)] = lastEvent.timestamp + cooldownDuration.inWholeMilliseconds
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ class OnReactionSentView @JvmOverloads constructor(
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
fun playForEmoji(emoji: CharSequence) {
|
fun playForEmoji(emojis: List<CharSequence>) {
|
||||||
motionLayout.progress = 0f
|
motionLayout.progress = 0f
|
||||||
|
|
||||||
listOf(
|
listOf(
|
||||||
@@ -47,8 +47,9 @@ class OnReactionSentView @JvmOverloads constructor(
|
|||||||
R.id.emoji_9,
|
R.id.emoji_9,
|
||||||
R.id.emoji_10,
|
R.id.emoji_10,
|
||||||
R.id.emoji_11
|
R.id.emoji_11
|
||||||
).forEach {
|
).forEachIndexed { index, it ->
|
||||||
findViewById<EmojiImageView>(it).setImageEmoji(emoji)
|
val emojiIndex = index % emojis.size
|
||||||
|
findViewById<EmojiImageView>(it).setImageEmoji(emojis[emojiIndex])
|
||||||
}
|
}
|
||||||
|
|
||||||
motionLayout.requestLayout()
|
motionLayout.requestLayout()
|
||||||
|
|||||||
@@ -159,7 +159,7 @@ class StoryViewsAndRepliesDialogFragment : FixedRoundedCornerBottomSheetDialogFr
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun onReactionEmojiSelected(emoji: String) {
|
override fun onReactionEmojiSelected(emoji: String) {
|
||||||
reactionView.playForEmoji(emoji)
|
reactionView.playForEmoji(listOf(emoji))
|
||||||
}
|
}
|
||||||
|
|
||||||
private inner class PageChangeCallback : ViewPager2.OnPageChangeCallback() {
|
private inner class PageChangeCallback : ViewPager2.OnPageChangeCallback() {
|
||||||
|
|||||||
Reference in New Issue
Block a user