feat: custom emote autocomplete
Signed-off-by: Infi <infi@infi.sh>
This commit is contained in:
parent
2d911f6e86
commit
924568a7b3
|
|
@ -57,6 +57,7 @@ import androidx.compose.ui.Alignment
|
|||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.draw.clip
|
||||
import androidx.compose.ui.graphics.toArgb
|
||||
import androidx.compose.ui.layout.ContentScale
|
||||
import androidx.compose.ui.platform.LocalDensity
|
||||
import androidx.compose.ui.platform.testTag
|
||||
import androidx.compose.ui.res.painterResource
|
||||
|
|
@ -74,8 +75,10 @@ import androidx.core.widget.addTextChangedListener
|
|||
import chat.revolt.R
|
||||
import chat.revolt.activities.RevoltTweenFloat
|
||||
import chat.revolt.activities.RevoltTweenInt
|
||||
import chat.revolt.api.REVOLT_FILES
|
||||
import chat.revolt.api.schemas.ChannelType
|
||||
import chat.revolt.api.schemas.Member
|
||||
import chat.revolt.components.generic.RemoteImage
|
||||
import chat.revolt.internals.Autocomplete
|
||||
import kotlinx.coroutines.launch
|
||||
|
||||
|
|
@ -288,7 +291,13 @@ fun NativeMessageField(
|
|||
)
|
||||
)
|
||||
},
|
||||
label = { Text(item.shortcode) },
|
||||
label = {
|
||||
if (item.custom != null) {
|
||||
Text(":${item.custom.name}:")
|
||||
} else {
|
||||
Text(item.shortcode)
|
||||
}
|
||||
},
|
||||
icon = {
|
||||
if (item.unicode != null) {
|
||||
Text(
|
||||
|
|
@ -299,10 +308,13 @@ fun NativeMessageField(
|
|||
style = MaterialTheme.typography.bodyMedium
|
||||
)
|
||||
} else {
|
||||
Icon(
|
||||
painter = painterResource(R.drawable.ic_emoticon_24dp),
|
||||
contentDescription = null,
|
||||
modifier = Modifier.size(SuggestionChipDefaults.IconSize)
|
||||
RemoteImage(
|
||||
url = "$REVOLT_FILES/emojis/${item.custom?.id}/emoji.gif",
|
||||
description = null,
|
||||
contentScale = ContentScale.Fit,
|
||||
modifier = Modifier
|
||||
.size(SuggestionChipDefaults.IconSize)
|
||||
.align(Alignment.CenterHorizontally)
|
||||
)
|
||||
}
|
||||
},
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
package chat.revolt.internals
|
||||
|
||||
import chat.revolt.api.RevoltAPI
|
||||
import chat.revolt.components.chat.AutocompleteSuggestion
|
||||
|
||||
object Autocomplete {
|
||||
|
|
@ -16,6 +17,20 @@ object Autocomplete {
|
|||
)
|
||||
}.distinctBy { it.shortcode }
|
||||
|
||||
return unicodeResults
|
||||
val customResults =
|
||||
RevoltAPI.emojiCache.values.filter { it.name?.contains(query) ?: false }.map {
|
||||
if (it.name != null) {
|
||||
AutocompleteSuggestion.Emoji(
|
||||
":${it.id}:",
|
||||
null,
|
||||
it,
|
||||
query
|
||||
)
|
||||
} else {
|
||||
null
|
||||
}
|
||||
}.filterNotNull().distinctBy { it.custom?.id }
|
||||
|
||||
return (unicodeResults + customResults)
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue