Add inline emoji search.

This commit is contained in:
Cody Henthorne
2022-08-01 10:55:40 -04:00
committed by Greyson Parrelli
parent ba7319e215
commit 19af68a27c
22 changed files with 708 additions and 93 deletions

View File

@@ -2,6 +2,8 @@ package org.thoughtcrime.securesms.keyboard.emoji.search
import android.content.Context
import android.net.Uri
import io.reactivex.rxjava3.core.Single
import io.reactivex.rxjava3.schedulers.Schedulers
import org.signal.core.util.concurrent.SignalExecutors
import org.thoughtcrime.securesms.components.emoji.Emoji
import org.thoughtcrime.securesms.components.emoji.EmojiPageModel
@@ -13,12 +15,23 @@ import org.thoughtcrime.securesms.util.TextSecurePreferences
import java.util.function.Consumer
private const val MINIMUM_QUERY_THRESHOLD = 1
private const val MINIMUM_INLINE_QUERY_THRESHOLD = 2
private const val EMOJI_SEARCH_LIMIT = 20
class EmojiSearchRepository(private val context: Context) {
private val emojiSearchDatabase: EmojiSearchDatabase = SignalDatabase.emojiSearch
fun submitQuery(query: String, limit: Int = EMOJI_SEARCH_LIMIT): Single<List<String>> {
if (query.length < MINIMUM_INLINE_QUERY_THRESHOLD) {
return Single.just(emptyList())
}
return Single.fromCallable<List<String>> {
emojiSearchDatabase.query(query, limit)
}.subscribeOn(Schedulers.io())
}
fun submitQuery(query: String, includeRecents: Boolean, limit: Int = EMOJI_SEARCH_LIMIT, consumer: Consumer<EmojiPageModel>) {
if (query.length < MINIMUM_QUERY_THRESHOLD && includeRecents) {
consumer.accept(RecentEmojiPageModel(context, TextSecurePreferences.RECENT_STORAGE_KEY))