diff --git a/app/src/main/java/org/linphone/ui/main/MainActivity.kt b/app/src/main/java/org/linphone/ui/main/MainActivity.kt index f468d050c..5588ccb61 100644 --- a/app/src/main/java/org/linphone/ui/main/MainActivity.kt +++ b/app/src/main/java/org/linphone/ui/main/MainActivity.kt @@ -608,26 +608,6 @@ class MainActivity : GenericActivity() { private fun loadContacts() { coreContext.contactsManager.loadContacts(this) - - /* TODO: Uncomment later, only fixes a small UI display issue for contacts with emoji in the name - val emojiCompat = coreContext.emojiCompat - lifecycleScope.launch { - withContext(Dispatchers.IO) { - // Wait for emoji compat library to have been loaded - Log.i("[Main Activity] Waiting for emoji compat library to have been loaded") - while (emojiCompat.loadState == EmojiCompat.LOAD_STATE_DEFAULT || emojiCompat.loadState == EmojiCompat.LOAD_STATE_LOADING) { - delay(100) - } - - Log.i( - "[Main Activity] Emoji compat library loading status is ${emojiCompat.loadState}, re-loading contacts" - ) - coreContext.postOnMainThread { - // Contacts loading must be started from UI thread - coreContext.contactsManager.loadContacts(this@MainActivity) - } - } - }*/ } private fun showAuthenticationRequestedDialog(identity: String) { diff --git a/app/src/main/java/org/linphone/ui/main/fragment/AbstractTopBarFragment.kt b/app/src/main/java/org/linphone/ui/main/fragment/AbstractTopBarFragment.kt index 91932676d..2125ec120 100644 --- a/app/src/main/java/org/linphone/ui/main/fragment/AbstractTopBarFragment.kt +++ b/app/src/main/java/org/linphone/ui/main/fragment/AbstractTopBarFragment.kt @@ -20,6 +20,7 @@ package org.linphone.ui.main.fragment import android.content.res.Configuration +import android.os.Bundle import android.view.View import androidx.annotation.IdRes import androidx.annotation.UiThread @@ -51,6 +52,10 @@ abstract class AbstractTopBarFragment : GenericFragment() { abstract fun onDefaultAccountChanged() + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + } + fun initSlidingPane(slidingPane: SlidingPaneLayout) { val slidingPaneBackPressedCallback = SlidingPaneBackPressedCallback(slidingPane) requireActivity().onBackPressedDispatcher.addCallback( diff --git a/app/src/main/java/org/linphone/ui/main/viewmodel/AbstractTopBarViewModel.kt b/app/src/main/java/org/linphone/ui/main/viewmodel/AbstractTopBarViewModel.kt index e7d336dde..0e5bb82a6 100644 --- a/app/src/main/java/org/linphone/ui/main/viewmodel/AbstractTopBarViewModel.kt +++ b/app/src/main/java/org/linphone/ui/main/viewmodel/AbstractTopBarViewModel.kt @@ -21,8 +21,14 @@ package org.linphone.ui.main.viewmodel import androidx.annotation.UiThread import androidx.annotation.WorkerThread +import androidx.emoji2.text.EmojiCompat import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewModelScope +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.delay +import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext import org.linphone.LinphoneApplication.Companion.coreContext import org.linphone.LinphoneApplication.Companion.corePreferences import org.linphone.core.Account @@ -147,7 +153,20 @@ open class AbstractTopBarViewModel @UiThread constructor() : ViewModel() { init { coreContext.postOnCoreThread { core -> core.addListener(coreListener) - configure() + } + + val emojiCompat = coreContext.emojiCompat + viewModelScope.launch { + withContext(Dispatchers.IO) { + // Wait for emoji compat library to have been loaded + Log.i("$TAG Waiting for emoji compat library to have been loaded") + while (emojiCompat.loadState == EmojiCompat.LOAD_STATE_DEFAULT || emojiCompat.loadState == EmojiCompat.LOAD_STATE_LOADING) { + delay(50) + } + coreContext.postOnCoreThread { + configure() + } + } } searchBarVisible.value = false