Fix emoji search showing in recent emoji bug.
This commit is contained in:
parent
2452056cbe
commit
9a5fcdbe4d
6 changed files with 37 additions and 20 deletions
|
@ -108,6 +108,7 @@ import org.thoughtcrime.securesms.PromptMmsActivity;
|
|||
import org.thoughtcrime.securesms.R;
|
||||
import org.thoughtcrime.securesms.ShortcutLauncherActivity;
|
||||
import org.thoughtcrime.securesms.TransportOption;
|
||||
import org.thoughtcrime.securesms.components.emoji.RecentEmojiPageModel;
|
||||
import org.thoughtcrime.securesms.verify.VerifyIdentityActivity;
|
||||
import org.thoughtcrime.securesms.attachments.Attachment;
|
||||
import org.thoughtcrime.securesms.attachments.TombstoneAttachment;
|
||||
|
@ -441,8 +442,9 @@ public class ConversationParentFragment extends Fragment
|
|||
|
||||
private volatile boolean screenInitialized = false;
|
||||
|
||||
private IdentityRecordList identityRecords = new IdentityRecordList(Collections.emptyList());
|
||||
private Callback callback;
|
||||
private IdentityRecordList identityRecords = new IdentityRecordList(Collections.emptyList());
|
||||
private Callback callback;
|
||||
private RecentEmojiPageModel recentEmojis;
|
||||
|
||||
@Override
|
||||
public @NonNull View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
|
||||
|
@ -3409,6 +3411,10 @@ public class ConversationParentFragment extends Fragment
|
|||
public void onEmojiSelected(String emoji) {
|
||||
if (inputPanel != null) {
|
||||
inputPanel.onEmojiSelected(emoji);
|
||||
if (recentEmojis == null) {
|
||||
recentEmojis = new RecentEmojiPageModel(ApplicationDependencies.getApplication(), TextSecurePreferences.RECENT_STORAGE_KEY);
|
||||
}
|
||||
recentEmojis.onCodePointSelected(emoji);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
package org.thoughtcrime.securesms.keyboard
|
||||
|
||||
interface KeyboardPageSelected {
|
||||
fun onPageSelected()
|
||||
}
|
|
@ -79,6 +79,7 @@ class KeyboardPagerFragment : Fragment() {
|
|||
|
||||
private inline fun <reified F : Fragment> displayPage(fragmentFactory: () -> F) {
|
||||
if (currentFragment is F) {
|
||||
(currentFragment as? KeyboardPageSelected)?.onPageSelected()
|
||||
return
|
||||
}
|
||||
|
||||
|
@ -92,6 +93,7 @@ class KeyboardPagerFragment : Fragment() {
|
|||
transaction.add(R.id.fragment_container, fragment)
|
||||
fragments[F::class] = fragment
|
||||
} else {
|
||||
(fragment as? KeyboardPageSelected)?.onPageSelected()
|
||||
transaction.show(fragment)
|
||||
}
|
||||
|
||||
|
|
|
@ -16,6 +16,7 @@ import org.thoughtcrime.securesms.components.emoji.EmojiEventListener
|
|||
import org.thoughtcrime.securesms.components.emoji.EmojiPageView
|
||||
import org.thoughtcrime.securesms.components.emoji.EmojiPageViewGridAdapter
|
||||
import org.thoughtcrime.securesms.components.emoji.EmojiPageViewGridAdapter.EmojiHeader
|
||||
import org.thoughtcrime.securesms.keyboard.KeyboardPageSelected
|
||||
import org.thoughtcrime.securesms.keyvalue.SignalStore
|
||||
import org.thoughtcrime.securesms.util.ThemedFragment.themedInflate
|
||||
import org.thoughtcrime.securesms.util.adapter.mapping.MappingModel
|
||||
|
@ -24,7 +25,7 @@ import java.util.Optional
|
|||
|
||||
private val DELETE_KEY_EVENT: KeyEvent = KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_DEL)
|
||||
|
||||
class EmojiKeyboardPageFragment : Fragment(), EmojiEventListener, EmojiPageViewGridAdapter.VariationSelectorListener {
|
||||
class EmojiKeyboardPageFragment : Fragment(), EmojiEventListener, EmojiPageViewGridAdapter.VariationSelectorListener, KeyboardPageSelected {
|
||||
|
||||
private lateinit var viewModel: EmojiKeyboardPageViewModel
|
||||
private lateinit var emojiPageView: EmojiPageView
|
||||
|
@ -95,6 +96,15 @@ class EmojiKeyboardPageFragment : Fragment(), EmojiEventListener, EmojiPageViewG
|
|||
eventListener = requireListener()
|
||||
}
|
||||
|
||||
override fun onResume() {
|
||||
super.onResume()
|
||||
viewModel.refreshRecentEmoji()
|
||||
}
|
||||
|
||||
override fun onPageSelected() {
|
||||
viewModel.refreshRecentEmoji()
|
||||
}
|
||||
|
||||
private fun updateCategoryTab(key: String) {
|
||||
emojiCategoriesRecycler.post {
|
||||
val index: Int = categoriesAdapter.indexOfFirst(EmojiKeyboardPageCategoryMappingModel::class.java) { it.key == key }
|
||||
|
@ -119,7 +129,6 @@ class EmojiKeyboardPageFragment : Fragment(), EmojiEventListener, EmojiPageViewG
|
|||
override fun onEmojiSelected(emoji: String) {
|
||||
SignalStore.emojiValues().setPreferredVariation(emoji)
|
||||
eventListener.onEmojiSelected(emoji)
|
||||
viewModel.addToRecents(emoji)
|
||||
}
|
||||
|
||||
override fun onKeyEvent(keyEvent: KeyEvent?) {
|
||||
|
|
|
@ -8,14 +8,11 @@ import org.thoughtcrime.securesms.emoji.EmojiSource.Companion.latest
|
|||
import org.thoughtcrime.securesms.util.TextSecurePreferences
|
||||
import java.util.function.Consumer
|
||||
|
||||
class EmojiKeyboardPageRepository(context: Context) {
|
||||
|
||||
private val recentEmojiPageModel: RecentEmojiPageModel = RecentEmojiPageModel(context, TextSecurePreferences.RECENT_STORAGE_KEY)
|
||||
|
||||
class EmojiKeyboardPageRepository(private val context: Context) {
|
||||
fun getEmoji(consumer: Consumer<List<EmojiPageModel>>) {
|
||||
SignalExecutors.BOUNDED.execute {
|
||||
val list = mutableListOf<EmojiPageModel>()
|
||||
list += recentEmojiPageModel
|
||||
list += RecentEmojiPageModel(context, TextSecurePreferences.RECENT_STORAGE_KEY)
|
||||
list += latest.displayPages
|
||||
consumer.accept(list)
|
||||
}
|
||||
|
|
|
@ -17,7 +17,7 @@ import org.thoughtcrime.securesms.util.TextSecurePreferences
|
|||
import org.thoughtcrime.securesms.util.adapter.mapping.MappingModelList
|
||||
import org.thoughtcrime.securesms.util.livedata.LiveDataUtil
|
||||
|
||||
class EmojiKeyboardPageViewModel(repository: EmojiKeyboardPageRepository) : ViewModel() {
|
||||
class EmojiKeyboardPageViewModel(private val repository: EmojiKeyboardPageRepository) : ViewModel() {
|
||||
|
||||
private val internalSelectedKey = DefaultValueLiveData<String>(getStartingTab())
|
||||
|
||||
|
@ -29,19 +29,17 @@ class EmojiKeyboardPageViewModel(repository: EmojiKeyboardPageRepository) : View
|
|||
val categories: LiveData<MappingModelList>
|
||||
|
||||
init {
|
||||
repository.getEmoji(allEmojiModels::postValue)
|
||||
|
||||
pages = LiveDataUtil.mapAsync(allEmojiModels) { models ->
|
||||
val list = MappingModelList()
|
||||
models.forEach { pageModel ->
|
||||
list += if (RecentEmojiPageModel.KEY == pageModel.key) {
|
||||
EmojiHeader(pageModel.key, R.string.ReactWithAnyEmojiBottomSheetDialogFragment__recently_used)
|
||||
} else {
|
||||
if (RecentEmojiPageModel.KEY != pageModel.key) {
|
||||
val category = EmojiCategory.forKey(pageModel.key)
|
||||
EmojiHeader(pageModel.key, category.getCategoryLabel())
|
||||
list += EmojiHeader(pageModel.key, category.getCategoryLabel())
|
||||
list += pageModel.toMappingModels()
|
||||
} else if (pageModel.displayEmoji.isNotEmpty()) {
|
||||
list += EmojiHeader(pageModel.key, R.string.ReactWithAnyEmojiBottomSheetDialogFragment__recently_used)
|
||||
list += pageModel.toMappingModels()
|
||||
}
|
||||
|
||||
list += pageModel.toMappingModels()
|
||||
}
|
||||
|
||||
list
|
||||
|
@ -65,8 +63,8 @@ class EmojiKeyboardPageViewModel(repository: EmojiKeyboardPageRepository) : View
|
|||
internalSelectedKey.value = key
|
||||
}
|
||||
|
||||
fun addToRecents(emoji: String) {
|
||||
RecentEmojiPageModel(ApplicationDependencies.getApplication(), TextSecurePreferences.RECENT_STORAGE_KEY).onCodePointSelected(emoji)
|
||||
fun refreshRecentEmoji() {
|
||||
repository.getEmoji(allEmojiModels::postValue)
|
||||
}
|
||||
|
||||
companion object {
|
||||
|
|
Loading…
Add table
Reference in a new issue