Fixed accounts list not updated when changing default account + hide account with hidden param
This commit is contained in:
parent
435e4b84f6
commit
86cba063d1
8 changed files with 63 additions and 25 deletions
|
@ -87,6 +87,14 @@ class AccountSettingsFragment : GenericSettingFragment<SettingsAccountFragmentBi
|
|||
}
|
||||
}
|
||||
|
||||
viewModel.accountDefaultEvent.observe(
|
||||
viewLifecycleOwner
|
||||
) {
|
||||
it.consume {
|
||||
sharedViewModel.defaultAccountChanged.value = true
|
||||
}
|
||||
}
|
||||
|
||||
view.doOnPreDraw {
|
||||
// Notifies fragment is ready to be drawn
|
||||
sharedViewModel.accountSettingsFragmentOpenedEvent.value = Event(true)
|
||||
|
|
|
@ -116,6 +116,13 @@ class SettingsFragment : SecureFragment<SettingsFragmentBinding>() {
|
|||
viewModel.updateAccountsList()
|
||||
}
|
||||
|
||||
sharedViewModel.defaultAccountChanged.observe(
|
||||
viewLifecycleOwner
|
||||
) {
|
||||
Log.i("[Settings] Default account changed, update accounts list")
|
||||
viewModel.updateAccountsList()
|
||||
}
|
||||
|
||||
val identity = arguments?.getString("Identity")
|
||||
if (identity != null) {
|
||||
Log.i("[Settings] Found identity parameter in arguments: $identity")
|
||||
|
|
|
@ -70,6 +70,10 @@ class AccountSettingsViewModel(val account: Account) : GenericSettingsViewModel(
|
|||
MutableLiveData<Event<Boolean>>()
|
||||
}
|
||||
|
||||
val accountDefaultEvent: MutableLiveData<Event<Boolean>> by lazy {
|
||||
MutableLiveData<Event<Boolean>>()
|
||||
}
|
||||
|
||||
val displayUsernameInsteadOfIdentity = corePreferences.replaceSipUriByUsername
|
||||
|
||||
private var accountToDelete: Account? = null
|
||||
|
@ -212,6 +216,7 @@ class AccountSettingsViewModel(val account: Account) : GenericSettingsViewModel(
|
|||
override fun onBoolValueChanged(newValue: Boolean) {
|
||||
if (newValue) {
|
||||
core.defaultAccount = account
|
||||
accountDefaultEvent.value = Event(true)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -24,6 +24,7 @@ import androidx.lifecycle.ViewModel
|
|||
import org.linphone.LinphoneApplication.Companion.coreContext
|
||||
import org.linphone.LinphoneApplication.Companion.corePreferences
|
||||
import org.linphone.activities.main.settings.SettingListenerStub
|
||||
import org.linphone.utils.LinphoneUtils
|
||||
|
||||
class SettingsViewModel : ViewModel() {
|
||||
private val tunnelAvailable: Boolean = coreContext.core.tunnelAvailable()
|
||||
|
@ -110,12 +111,10 @@ class SettingsViewModel : ViewModel() {
|
|||
accounts.value.orEmpty().forEach(AccountSettingsViewModel::destroy)
|
||||
|
||||
val list = arrayListOf<AccountSettingsViewModel>()
|
||||
if (coreContext.core.accountList.isNotEmpty()) {
|
||||
for (account in coreContext.core.accountList) {
|
||||
val viewModel = AccountSettingsViewModel(account)
|
||||
viewModel.accountsSettingsListener = accountClickListener
|
||||
list.add(viewModel)
|
||||
}
|
||||
for (account in LinphoneUtils.getAccountsNotHidden()) {
|
||||
val viewModel = AccountSettingsViewModel(account)
|
||||
viewModel.accountsSettingsListener = accountClickListener
|
||||
list.add(viewModel)
|
||||
}
|
||||
|
||||
accounts.value = list
|
||||
|
|
|
@ -73,6 +73,13 @@ class SideMenuFragment : GenericFragment<SideMenuFragmentBinding>() {
|
|||
viewModel.updateAccountsList()
|
||||
}
|
||||
|
||||
sharedViewModel.defaultAccountChanged.observe(
|
||||
viewLifecycleOwner
|
||||
) {
|
||||
Log.i("[Side Menu] Default account changed, update accounts list")
|
||||
viewModel.updateAccountsList()
|
||||
}
|
||||
|
||||
viewModel.accountsSettingsListener = object : SettingListenerStub() {
|
||||
override fun onAccountClicked(identity: String) {
|
||||
val args = Bundle()
|
||||
|
|
|
@ -83,29 +83,27 @@ class SideMenuViewModel : ViewModel() {
|
|||
accounts.value.orEmpty().forEach(AccountSettingsViewModel::destroy)
|
||||
|
||||
val list = arrayListOf<AccountSettingsViewModel>()
|
||||
if (coreContext.core.accountList.isNotEmpty()) {
|
||||
val defaultAccount = coreContext.core.defaultAccount
|
||||
if (defaultAccount != null) {
|
||||
val defaultViewModel = AccountSettingsViewModel(defaultAccount)
|
||||
defaultViewModel.accountsSettingsListener = object : SettingListenerStub() {
|
||||
val defaultAccount = coreContext.core.defaultAccount
|
||||
if (defaultAccount != null) {
|
||||
val defaultViewModel = AccountSettingsViewModel(defaultAccount)
|
||||
defaultViewModel.accountsSettingsListener = object : SettingListenerStub() {
|
||||
override fun onAccountClicked(identity: String) {
|
||||
accountsSettingsListener.onAccountClicked(identity)
|
||||
}
|
||||
}
|
||||
defaultAccountViewModel.value = defaultViewModel
|
||||
defaultAccountFound.value = true
|
||||
}
|
||||
|
||||
for (account in LinphoneUtils.getAccountsNotHidden()) {
|
||||
if (account != coreContext.core.defaultAccount) {
|
||||
val viewModel = AccountSettingsViewModel(account)
|
||||
viewModel.accountsSettingsListener = object : SettingListenerStub() {
|
||||
override fun onAccountClicked(identity: String) {
|
||||
accountsSettingsListener.onAccountClicked(identity)
|
||||
}
|
||||
}
|
||||
defaultAccountViewModel.value = defaultViewModel
|
||||
defaultAccountFound.value = true
|
||||
}
|
||||
|
||||
for (account in coreContext.core.accountList) {
|
||||
if (account != coreContext.core.defaultAccount) {
|
||||
val viewModel = AccountSettingsViewModel(account)
|
||||
viewModel.accountsSettingsListener = object : SettingListenerStub() {
|
||||
override fun onAccountClicked(identity: String) {
|
||||
accountsSettingsListener.onAccountClicked(identity)
|
||||
}
|
||||
}
|
||||
list.add(viewModel)
|
||||
}
|
||||
list.add(viewModel)
|
||||
}
|
||||
}
|
||||
accounts.value = list
|
||||
|
|
|
@ -88,6 +88,8 @@ class SharedMainViewModel : ViewModel() {
|
|||
|
||||
/* Accounts */
|
||||
|
||||
val defaultAccountChanged = MutableLiveData<Boolean>()
|
||||
|
||||
val accountRemoved = MutableLiveData<Boolean>()
|
||||
|
||||
val accountSettingsFragmentOpenedEvent: MutableLiveData<Event<Boolean>> by lazy {
|
||||
|
|
|
@ -222,5 +222,17 @@ class LinphoneUtils {
|
|||
remoteSipUri.clean()
|
||||
return "${localSipUri.asStringUriOnly()}~${remoteSipUri.asStringUriOnly()}"
|
||||
}
|
||||
|
||||
fun getAccountsNotHidden(): List<Account> {
|
||||
val list = arrayListOf<Account>()
|
||||
|
||||
for (account in coreContext.core.accountList) {
|
||||
if (account.getCustomParam("hidden") != "1") {
|
||||
list.add(account)
|
||||
}
|
||||
}
|
||||
|
||||
return list
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue