diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/customreaction/EmojiItem.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/customreaction/EmojiItem.kt index db5967e9a4..a191de7202 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/customreaction/EmojiItem.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/customreaction/EmojiItem.kt @@ -70,13 +70,13 @@ fun EmojiItem( item: Emoji, isSelected: Boolean, onSelectEmoji: (Emoji) -> Unit, + onLongPress: (Emoji) -> Unit, + onDismissSkinPicker: () -> Unit, + skinPickerEmoji: Emoji?, + selectedSkinUnicodes: ImmutableSet, + hasSelectedSkin: Boolean, modifier: Modifier = Modifier, emojiSize: TextUnit = 20.sp, - onLongPress: ((Emoji) -> Unit)? = null, - skinPickerEmoji: Emoji? = null, - onDismissSkinPicker: (() -> Unit)? = null, - selectedSkinUnicodes: ImmutableSet = persistentSetOf(), - hasSelectedSkin: Boolean = false, ) { val backgroundColor = when { isSelected -> ElementTheme.colors.bgActionPrimaryRest @@ -139,12 +139,10 @@ fun EmojiItem( var startOffset = Offset.Zero detectDragGesturesAfterLongPress( onDragStart = { position -> - if (onLongPress != null) { - startOffset = position - dismissed = false - onLongPress(item) - hoveredIndex = -1 - } + startOffset = position + dismissed = false + onLongPress(item) + hoveredIndex = -1 }, onDrag = { change, _ -> if (!dismissed) { @@ -159,7 +157,7 @@ fun EmojiItem( if (!isValidDrag) { dismissed = true hoveredIndex = -1 - onDismissSkinPicker?.invoke() + onDismissSkinPicker() } else { val skinItemsCount = item.skins!!.size // Original + variants @@ -199,7 +197,7 @@ fun EmojiItem( } dismissed = false hoveredIndex = -1 - onDismissSkinPicker?.invoke() + onDismissSkinPicker() }, onDragCancel = { dismissed = false @@ -241,7 +239,7 @@ fun EmojiItem( val pickerHeight = SkinTonePadding * 2 + SkinToneSlotSize val popupOffsetPx = with(density) { -pickerHeight.roundToPx() } Popup( - onDismissRequest = { onDismissSkinPicker?.invoke() }, + onDismissRequest = { onDismissSkinPicker() }, alignment = Alignment.BottomCenter, offset = IntOffset(0, popupOffsetPx), ) { @@ -249,7 +247,7 @@ fun EmojiItem( emoji = item, onSelect = { selectedEmoji -> onSelectEmoji(selectedEmoji) - onDismissSkinPicker?.invoke() + onDismissSkinPicker() }, hoveredIndex = hoveredIndex, selectedUnicodes = selectedSkinUnicodes, @@ -282,6 +280,10 @@ internal fun EmojiItemPreview() = ElementPreview { isSelected = isSelected, onSelectEmoji = {}, hasSelectedSkin = hasSelectedSkin, + onLongPress = {}, + onDismissSkinPicker = {}, + skinPickerEmoji = null, + selectedSkinUnicodes = persistentSetOf(), ) } } diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/customreaction/picker/EmojiPicker.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/customreaction/picker/EmojiPicker.kt index 05fb849ce9..ce65a435f4 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/customreaction/picker/EmojiPicker.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/customreaction/picker/EmojiPicker.kt @@ -131,10 +131,10 @@ private fun EmojiResults( emojis: ImmutableList, isEmojiSelected: (Emoji) -> Boolean, onSelectEmoji: (Emoji) -> Unit, - onLongPress: ((Emoji) -> Unit)? = null, - skinPickerEmoji: Emoji? = null, - onDismissSkinPicker: (() -> Unit)? = null, - selectedEmojis: ImmutableSet = persistentSetOf(), + onLongPress: (Emoji) -> Unit, + skinPickerEmoji: Emoji?, + onDismissSkinPicker: () -> Unit, + selectedEmojis: ImmutableSet, ) { LazyVerticalGrid( modifier = Modifier.fillMaxSize(), diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/customreaction/picker/SkinTonePicker.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/customreaction/picker/SkinTonePicker.kt index 56540e8251..1ac66b5378 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/customreaction/picker/SkinTonePicker.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/customreaction/picker/SkinTonePicker.kt @@ -43,10 +43,10 @@ val SkinTonePadding = 4.dp @Composable fun SkinTonePicker( emoji: Emoji, + hoveredIndex: Int, + selectedUnicodes: ImmutableSet, onSelect: (Emoji) -> Unit, modifier: Modifier = Modifier, - hoveredIndex: Int = -1, - selectedUnicodes: ImmutableSet = persistentSetOf(), ) { val skins = emoji.skins.orEmpty() val emojiSize = 32.dp.toSp() @@ -122,6 +122,8 @@ internal fun SkinTonePickerPreview() = ElementPreview { unicode = "👍", skins = aSkinList(), ), + hoveredIndex = -1, + selectedUnicodes = persistentSetOf(), onSelect = {}, ) }