kopia lustrzana https://github.com/ryukoposting/Signal-Android
37 wiersze
1.4 KiB
Kotlin
37 wiersze
1.4 KiB
Kotlin
package org.thoughtcrime.securesms.keyboard.emoji.search
|
|
|
|
import androidx.lifecycle.LiveData
|
|
import androidx.lifecycle.MutableLiveData
|
|
import androidx.lifecycle.ViewModel
|
|
import androidx.lifecycle.ViewModelProvider
|
|
import org.thoughtcrime.securesms.components.emoji.EmojiPageModel
|
|
import org.thoughtcrime.securesms.components.emoji.RecentEmojiPageModel
|
|
import org.thoughtcrime.securesms.keyboard.emoji.toMappingModels
|
|
import org.thoughtcrime.securesms.util.adapter.mapping.MappingModel
|
|
import org.thoughtcrime.securesms.util.livedata.LiveDataUtil
|
|
|
|
class EmojiSearchViewModel(private val repository: EmojiSearchRepository) : ViewModel() {
|
|
|
|
private val pageModel = MutableLiveData<EmojiPageModel>()
|
|
|
|
val emojiList: LiveData<EmojiSearchResults> = LiveDataUtil.mapAsync(pageModel) { page ->
|
|
EmojiSearchResults(page.toMappingModels(), page.key == RecentEmojiPageModel.KEY)
|
|
}
|
|
|
|
init {
|
|
onQueryChanged("")
|
|
}
|
|
|
|
fun onQueryChanged(query: String) {
|
|
repository.submitQuery(query = query, includeRecents = true, consumer = pageModel::postValue)
|
|
}
|
|
|
|
data class EmojiSearchResults(val emojiList: List<MappingModel<*>>, val isRecents: Boolean)
|
|
|
|
class Factory(private val repository: EmojiSearchRepository) : ViewModelProvider.Factory {
|
|
override fun <T : ViewModel> create(modelClass: Class<T>): T {
|
|
return requireNotNull(modelClass.cast(EmojiSearchViewModel(repository)))
|
|
}
|
|
}
|
|
}
|