add emoji autocomplete to task form

This commit is contained in:
Phillip Thelen 2019-02-28 21:55:56 +01:00
parent 3fde7dbba9
commit 76332b74ab
2 changed files with 12 additions and 3 deletions

View file

@ -36,6 +36,7 @@ import com.habitrpg.android.habitica.modules.AppModule
import com.habitrpg.android.habitica.ui.WrapContentRecyclerViewLayoutManager
import com.habitrpg.android.habitica.ui.adapter.tasks.CheckListAdapter
import com.habitrpg.android.habitica.ui.adapter.tasks.RemindersAdapter
import com.habitrpg.android.habitica.ui.helpers.*
import io.reactivex.functions.Consumer
import io.realm.Realm
import io.realm.RealmList
@ -229,6 +230,14 @@ class TaskFormActivity : BaseActivity() {
createRemindersRecyclerView()
}
val textAutocompleteAdapter = AutocompleteAdapter(this)
taskText.setAdapter(textAutocompleteAdapter)
taskText.threshold = 2
taskText.setTokenizer(ChatInputTokenizer())
val notesAutocompleteAdapter = AutocompleteAdapter(this)
taskNotes.setAdapter(notesAutocompleteAdapter)
taskNotes.threshold = 2
taskNotes.setTokenizer(ChatInputTokenizer())
enableRepeatables()

View file

@ -17,7 +17,7 @@ import net.pherth.android.emoji_library.EmojiMap
import net.pherth.android.emoji_library.EmojiParser
import net.pherth.android.emoji_library.EmojiTextView
class AutocompleteAdapter(val context: Context, val socialRepository: SocialRepository, var autocompleteContext: String, var groupID: String?) : BaseAdapter(), Filterable {
class AutocompleteAdapter(val context: Context, val socialRepository: SocialRepository? = null, var autocompleteContext: String? = null, var groupID: String? = null) : BaseAdapter(), Filterable {
private var userResults: List<FindUsernameResult> = arrayListOf()
private var emojiResults: List<String> = arrayListOf()
private var isAutocompletingUsers = true
@ -27,12 +27,12 @@ class AutocompleteAdapter(val context: Context, val socialRepository: SocialRepo
override fun performFiltering(constraint: CharSequence?): FilterResults {
val filterResults = FilterResults()
if (constraint != null && constraint.isNotEmpty()) {
if (constraint[0] == '@') {
if (constraint[0] == '@' && socialRepository != null) {
isAutocompletingUsers = true
userResults = socialRepository.findUsernames(constraint.toString().drop(1), autocompleteContext, groupID).blockingFirst(arrayListOf())
filterResults.values = userResults
filterResults.count = userResults.size
} else {
} else if (constraint[0] == ':') {
isAutocompletingUsers = false
emojiResults = EmojiMap.invertedEmojiMap.keys.filter { it.startsWith(constraint) }
filterResults.values = emojiResults