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 */
|
/* Settings related */
|
||||||
|
|
||||||
internal fun SettingsFragment.navigateToAccountSettings(
|
internal fun SettingsFragment.navigateToAccountSettings(identity: String) {
|
||||||
identity: String,
|
|
||||||
slidingPane: SlidingPaneLayout
|
|
||||||
) {
|
|
||||||
if (findNavController().currentDestination?.id == R.id.settingsFragment) {
|
if (findNavController().currentDestination?.id == R.id.settingsFragment) {
|
||||||
val bundle = bundleOf("Identity" to identity)
|
val bundle = bundleOf("Identity" to identity)
|
||||||
val navHostFragment =
|
val navHostFragment =
|
||||||
|
@ -546,7 +543,6 @@ internal fun SettingsFragment.navigateToAccountSettings(
|
||||||
bundle,
|
bundle,
|
||||||
popupTo(R.id.accountSettingsFragment, true)
|
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.os.Bundle
|
||||||
import android.view.View
|
import android.view.View
|
||||||
|
import androidx.core.view.doOnPreDraw
|
||||||
import androidx.lifecycle.ViewModelProvider
|
import androidx.lifecycle.ViewModelProvider
|
||||||
import org.linphone.R
|
import org.linphone.R
|
||||||
import org.linphone.activities.main.settings.viewmodels.AccountSettingsViewModel
|
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() {
|
override fun goBack() {
|
||||||
|
|
|
@ -67,6 +67,16 @@ class SettingsFragment : SecureFragment<SettingsFragmentBinding>() {
|
||||||
|
|
||||||
view.doOnPreDraw { sharedViewModel.isSlidingPaneSlideable.value = binding.slidingPane.isSlideable }
|
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(
|
sharedViewModel.closeSlidingPaneEvent.observe(
|
||||||
viewLifecycleOwner,
|
viewLifecycleOwner,
|
||||||
{
|
{
|
||||||
|
@ -113,13 +123,13 @@ class SettingsFragment : SecureFragment<SettingsFragmentBinding>() {
|
||||||
if (identity != null) {
|
if (identity != null) {
|
||||||
Log.i("[Settings] Found identity parameter in arguments: $identity")
|
Log.i("[Settings] Found identity parameter in arguments: $identity")
|
||||||
arguments?.clear()
|
arguments?.clear()
|
||||||
navigateToAccountSettings(identity, binding.slidingPane)
|
navigateToAccountSettings(identity)
|
||||||
}
|
}
|
||||||
|
|
||||||
viewModel.accountsSettingsListener = object : SettingListenerStub() {
|
viewModel.accountsSettingsListener = object : SettingListenerStub() {
|
||||||
override fun onAccountClicked(identity: String) {
|
override fun onAccountClicked(identity: String) {
|
||||||
Log.i("[Settings] Navigation to settings for account with identity: $identity")
|
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 accountRemoved = MutableLiveData<Boolean>()
|
||||||
|
|
||||||
|
val accountSettingsFragmentOpenedEvent: MutableLiveData<Event<Boolean>> by lazy {
|
||||||
|
MutableLiveData<Event<Boolean>>()
|
||||||
|
}
|
||||||
|
|
||||||
/* Call */
|
/* Call */
|
||||||
|
|
||||||
var pendingCallTransfer: Boolean = false
|
var pendingCallTransfer: Boolean = false
|
||||||
|
|
Loading…
Reference in a new issue