fix: issue where emoji picker animation blocks UI thread
Signed-off-by: Infi <infi@infi.sh>
This commit is contained in:
parent
aa96944f9d
commit
182566dcc0
|
|
@ -79,7 +79,6 @@ import chat.revolt.internals.FitzpatrickSkinTone
|
||||||
import chat.revolt.internals.UnicodeEmojiSection
|
import chat.revolt.internals.UnicodeEmojiSection
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
|
|
||||||
@OptIn(ExperimentalFoundationApi::class)
|
|
||||||
@Composable
|
@Composable
|
||||||
fun EmojiPicker(onEmojiSelected: (String) -> Unit) {
|
fun EmojiPicker(onEmojiSelected: (String) -> Unit) {
|
||||||
val view = LocalView.current
|
val view = LocalView.current
|
||||||
|
|
@ -280,18 +279,23 @@ fun EmojiPicker(onEmojiSelected: (String) -> Unit) {
|
||||||
FitzpatrickSkinTone.None -> stringResource(
|
FitzpatrickSkinTone.None -> stringResource(
|
||||||
R.string.emoji_picker_skin_tone_none
|
R.string.emoji_picker_skin_tone_none
|
||||||
)
|
)
|
||||||
|
|
||||||
FitzpatrickSkinTone.Light -> stringResource(
|
FitzpatrickSkinTone.Light -> stringResource(
|
||||||
R.string.emoji_picker_skin_tone_fitzpatrick_1_2
|
R.string.emoji_picker_skin_tone_fitzpatrick_1_2
|
||||||
)
|
)
|
||||||
|
|
||||||
FitzpatrickSkinTone.MediumLight -> stringResource(
|
FitzpatrickSkinTone.MediumLight -> stringResource(
|
||||||
R.string.emoji_picker_skin_tone_fitzpatrick_3
|
R.string.emoji_picker_skin_tone_fitzpatrick_3
|
||||||
)
|
)
|
||||||
|
|
||||||
FitzpatrickSkinTone.Medium -> stringResource(
|
FitzpatrickSkinTone.Medium -> stringResource(
|
||||||
R.string.emoji_picker_skin_tone_fitzpatrick_4
|
R.string.emoji_picker_skin_tone_fitzpatrick_4
|
||||||
)
|
)
|
||||||
|
|
||||||
FitzpatrickSkinTone.MediumDark -> stringResource(
|
FitzpatrickSkinTone.MediumDark -> stringResource(
|
||||||
R.string.emoji_picker_skin_tone_fitzpatrick_5
|
R.string.emoji_picker_skin_tone_fitzpatrick_5
|
||||||
)
|
)
|
||||||
|
|
||||||
FitzpatrickSkinTone.Dark -> stringResource(
|
FitzpatrickSkinTone.Dark -> stringResource(
|
||||||
R.string.emoji_picker_skin_tone_fitzpatrick_6
|
R.string.emoji_picker_skin_tone_fitzpatrick_6
|
||||||
)
|
)
|
||||||
|
|
@ -371,7 +375,7 @@ fun EmojiPicker(onEmojiSelected: (String) -> Unit) {
|
||||||
pickerList.indexOfFirst {
|
pickerList.indexOfFirst {
|
||||||
it is EmojiPickerItem.Section && it.category is Category.ServerEmoteCategory && it.category.server == server
|
it is EmojiPickerItem.Section && it.category is Category.ServerEmoteCategory && it.category.server == server
|
||||||
}
|
}
|
||||||
gridState.animateScrollToItem(index)
|
gridState.scrollToItem(index)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.then(
|
.then(
|
||||||
|
|
@ -418,7 +422,7 @@ fun EmojiPicker(onEmojiSelected: (String) -> Unit) {
|
||||||
pickerList.indexOfFirst {
|
pickerList.indexOfFirst {
|
||||||
it is EmojiPickerItem.Section && it.category is Category.UnicodeEmojiCategory && it.category.definition == category
|
it is EmojiPickerItem.Section && it.category is Category.UnicodeEmojiCategory && it.category.definition == category
|
||||||
}
|
}
|
||||||
gridState.animateScrollToItem(index)
|
gridState.scrollToItem(index)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.then(
|
.then(
|
||||||
|
|
@ -440,27 +444,35 @@ fun EmojiPicker(onEmojiSelected: (String) -> Unit) {
|
||||||
UnicodeEmojiSection.Smileys -> painterResource(
|
UnicodeEmojiSection.Smileys -> painterResource(
|
||||||
R.drawable.ic_emoticon_24dp
|
R.drawable.ic_emoticon_24dp
|
||||||
)
|
)
|
||||||
|
|
||||||
UnicodeEmojiSection.People -> painterResource(
|
UnicodeEmojiSection.People -> painterResource(
|
||||||
R.drawable.ic_human_greeting_variant_24dp
|
R.drawable.ic_human_greeting_variant_24dp
|
||||||
)
|
)
|
||||||
|
|
||||||
UnicodeEmojiSection.Animals -> painterResource(
|
UnicodeEmojiSection.Animals -> painterResource(
|
||||||
R.drawable.ic_snake_24dp
|
R.drawable.ic_snake_24dp
|
||||||
)
|
)
|
||||||
|
|
||||||
UnicodeEmojiSection.Food -> painterResource(
|
UnicodeEmojiSection.Food -> painterResource(
|
||||||
R.drawable.ic_glass_mug_variant_24dp
|
R.drawable.ic_glass_mug_variant_24dp
|
||||||
)
|
)
|
||||||
|
|
||||||
UnicodeEmojiSection.Travel -> painterResource(
|
UnicodeEmojiSection.Travel -> painterResource(
|
||||||
R.drawable.ic_train_bus_24dp
|
R.drawable.ic_train_bus_24dp
|
||||||
)
|
)
|
||||||
|
|
||||||
UnicodeEmojiSection.Activities -> painterResource(
|
UnicodeEmojiSection.Activities -> painterResource(
|
||||||
R.drawable.ic_skate_24dp
|
R.drawable.ic_skate_24dp
|
||||||
)
|
)
|
||||||
|
|
||||||
UnicodeEmojiSection.Objects -> painterResource(
|
UnicodeEmojiSection.Objects -> painterResource(
|
||||||
R.drawable.ic_table_chair_24dp
|
R.drawable.ic_table_chair_24dp
|
||||||
)
|
)
|
||||||
|
|
||||||
UnicodeEmojiSection.Symbols -> painterResource(
|
UnicodeEmojiSection.Symbols -> painterResource(
|
||||||
R.drawable.ic_symbol_24dp
|
R.drawable.ic_symbol_24dp
|
||||||
)
|
)
|
||||||
|
|
||||||
UnicodeEmojiSection.Flags -> painterResource(
|
UnicodeEmojiSection.Flags -> painterResource(
|
||||||
R.drawable.ic_flag_24dp
|
R.drawable.ic_flag_24dp
|
||||||
)
|
)
|
||||||
|
|
@ -613,6 +625,7 @@ fun ColumnScope.PickerItem(
|
||||||
is Category.UnicodeEmojiCategory -> stringResource(
|
is Category.UnicodeEmojiCategory -> stringResource(
|
||||||
item.category.definition.nameResource
|
item.category.definition.nameResource
|
||||||
)
|
)
|
||||||
|
|
||||||
is Category.ServerEmoteCategory ->
|
is Category.ServerEmoteCategory ->
|
||||||
item.category.server.name
|
item.category.server.name
|
||||||
?: stringResource(R.string.unknown)
|
?: stringResource(R.string.unknown)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue