Fix emoji search showing in recent emoji bug.

fork-5.53.8
Cody Henthorne 2022-02-24 14:33:09 -05:00 zatwierdzone przez Alex Hart
rodzic 2452056cbe
commit 9a5fcdbe4d
6 zmienionych plików z 37 dodań i 20 usunięć

Wyświetl plik

@ -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);
}
}

Wyświetl plik

@ -0,0 +1,5 @@
package org.thoughtcrime.securesms.keyboard
interface KeyboardPageSelected {
fun onPageSelected()
}

Wyświetl plik

@ -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)
}

Wyświetl plik

@ -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?) {

Wyświetl plik

@ -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)
}

Wyświetl plik

@ -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 {