Fixed account settings sliding pane not opened when clicking on account in side menu
This commit is contained in:
parent
7c73d1e535
commit
38e230ff3f
4 changed files with 23 additions and 7 deletions
|
@ -533,10 +533,7 @@ internal fun DetailCallLogFragment.navigateToEmptyCallHistory() {
|
|||
|
||||
/* Settings related */
|
||||
|
||||
internal fun SettingsFragment.navigateToAccountSettings(
|
||||
identity: String,
|
||||
slidingPane: SlidingPaneLayout
|
||||
) {
|
||||
internal fun SettingsFragment.navigateToAccountSettings(identity: String) {
|
||||
if (findNavController().currentDestination?.id == R.id.settingsFragment) {
|
||||
val bundle = bundleOf("Identity" to identity)
|
||||
val navHostFragment =
|
||||
|
@ -546,7 +543,6 @@ internal fun SettingsFragment.navigateToAccountSettings(
|
|||
bundle,
|
||||
popupTo(R.id.accountSettingsFragment, true)
|
||||
)
|
||||
if (!slidingPane.isOpen) slidingPane.openPane()
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -21,6 +21,7 @@ package org.linphone.activities.main.settings.fragments
|
|||
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import androidx.core.view.doOnPreDraw
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import org.linphone.R
|
||||
import org.linphone.activities.main.settings.viewmodels.AccountSettingsViewModel
|
||||
|
@ -90,6 +91,11 @@ class AccountSettingsFragment : GenericSettingFragment<SettingsAccountFragmentBi
|
|||
}
|
||||
}
|
||||
)
|
||||
|
||||
view.doOnPreDraw {
|
||||
// Notifies fragment is ready to be drawn
|
||||
sharedViewModel.accountSettingsFragmentOpenedEvent.value = Event(true)
|
||||
}
|
||||
}
|
||||
|
||||
override fun goBack() {
|
||||
|
|
|
@ -67,6 +67,16 @@ class SettingsFragment : SecureFragment<SettingsFragmentBinding>() {
|
|||
|
||||
view.doOnPreDraw { sharedViewModel.isSlidingPaneSlideable.value = binding.slidingPane.isSlideable }
|
||||
|
||||
// Account settings loading can take some time, so wait until it is ready before opening the pane
|
||||
sharedViewModel.accountSettingsFragmentOpenedEvent.observe(
|
||||
viewLifecycleOwner,
|
||||
{
|
||||
it.consume {
|
||||
binding.slidingPane.openPane()
|
||||
}
|
||||
}
|
||||
)
|
||||
|
||||
sharedViewModel.closeSlidingPaneEvent.observe(
|
||||
viewLifecycleOwner,
|
||||
{
|
||||
|
@ -113,13 +123,13 @@ class SettingsFragment : SecureFragment<SettingsFragmentBinding>() {
|
|||
if (identity != null) {
|
||||
Log.i("[Settings] Found identity parameter in arguments: $identity")
|
||||
arguments?.clear()
|
||||
navigateToAccountSettings(identity, binding.slidingPane)
|
||||
navigateToAccountSettings(identity)
|
||||
}
|
||||
|
||||
viewModel.accountsSettingsListener = object : SettingListenerStub() {
|
||||
override fun onAccountClicked(identity: String) {
|
||||
Log.i("[Settings] Navigation to settings for account with identity: $identity")
|
||||
navigateToAccountSettings(identity, binding.slidingPane)
|
||||
navigateToAccountSettings(identity)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -87,6 +87,10 @@ class SharedMainViewModel : ViewModel() {
|
|||
|
||||
val accountRemoved = MutableLiveData<Boolean>()
|
||||
|
||||
val accountSettingsFragmentOpenedEvent: MutableLiveData<Event<Boolean>> by lazy {
|
||||
MutableLiveData<Event<Boolean>>()
|
||||
}
|
||||
|
||||
/* Call */
|
||||
|
||||
var pendingCallTransfer: Boolean = false
|
||||
|
|
Loading…
Reference in a new issue