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 {
|
view.doOnPreDraw {
|
||||||
// Notifies fragment is ready to be drawn
|
// Notifies fragment is ready to be drawn
|
||||||
sharedViewModel.accountSettingsFragmentOpenedEvent.value = Event(true)
|
sharedViewModel.accountSettingsFragmentOpenedEvent.value = Event(true)
|
||||||
|
|
|
@ -116,6 +116,13 @@ class SettingsFragment : SecureFragment<SettingsFragmentBinding>() {
|
||||||
viewModel.updateAccountsList()
|
viewModel.updateAccountsList()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sharedViewModel.defaultAccountChanged.observe(
|
||||||
|
viewLifecycleOwner
|
||||||
|
) {
|
||||||
|
Log.i("[Settings] Default account changed, update accounts list")
|
||||||
|
viewModel.updateAccountsList()
|
||||||
|
}
|
||||||
|
|
||||||
val identity = arguments?.getString("Identity")
|
val identity = arguments?.getString("Identity")
|
||||||
if (identity != null) {
|
if (identity != null) {
|
||||||
Log.i("[Settings] Found identity parameter in arguments: $identity")
|
Log.i("[Settings] Found identity parameter in arguments: $identity")
|
||||||
|
|
|
@ -70,6 +70,10 @@ class AccountSettingsViewModel(val account: Account) : GenericSettingsViewModel(
|
||||||
MutableLiveData<Event<Boolean>>()
|
MutableLiveData<Event<Boolean>>()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
val accountDefaultEvent: MutableLiveData<Event<Boolean>> by lazy {
|
||||||
|
MutableLiveData<Event<Boolean>>()
|
||||||
|
}
|
||||||
|
|
||||||
val displayUsernameInsteadOfIdentity = corePreferences.replaceSipUriByUsername
|
val displayUsernameInsteadOfIdentity = corePreferences.replaceSipUriByUsername
|
||||||
|
|
||||||
private var accountToDelete: Account? = null
|
private var accountToDelete: Account? = null
|
||||||
|
@ -212,6 +216,7 @@ class AccountSettingsViewModel(val account: Account) : GenericSettingsViewModel(
|
||||||
override fun onBoolValueChanged(newValue: Boolean) {
|
override fun onBoolValueChanged(newValue: Boolean) {
|
||||||
if (newValue) {
|
if (newValue) {
|
||||||
core.defaultAccount = account
|
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.coreContext
|
||||||
import org.linphone.LinphoneApplication.Companion.corePreferences
|
import org.linphone.LinphoneApplication.Companion.corePreferences
|
||||||
import org.linphone.activities.main.settings.SettingListenerStub
|
import org.linphone.activities.main.settings.SettingListenerStub
|
||||||
|
import org.linphone.utils.LinphoneUtils
|
||||||
|
|
||||||
class SettingsViewModel : ViewModel() {
|
class SettingsViewModel : ViewModel() {
|
||||||
private val tunnelAvailable: Boolean = coreContext.core.tunnelAvailable()
|
private val tunnelAvailable: Boolean = coreContext.core.tunnelAvailable()
|
||||||
|
@ -110,13 +111,11 @@ class SettingsViewModel : ViewModel() {
|
||||||
accounts.value.orEmpty().forEach(AccountSettingsViewModel::destroy)
|
accounts.value.orEmpty().forEach(AccountSettingsViewModel::destroy)
|
||||||
|
|
||||||
val list = arrayListOf<AccountSettingsViewModel>()
|
val list = arrayListOf<AccountSettingsViewModel>()
|
||||||
if (coreContext.core.accountList.isNotEmpty()) {
|
for (account in LinphoneUtils.getAccountsNotHidden()) {
|
||||||
for (account in coreContext.core.accountList) {
|
|
||||||
val viewModel = AccountSettingsViewModel(account)
|
val viewModel = AccountSettingsViewModel(account)
|
||||||
viewModel.accountsSettingsListener = accountClickListener
|
viewModel.accountsSettingsListener = accountClickListener
|
||||||
list.add(viewModel)
|
list.add(viewModel)
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
accounts.value = list
|
accounts.value = list
|
||||||
}
|
}
|
||||||
|
|
|
@ -73,6 +73,13 @@ class SideMenuFragment : GenericFragment<SideMenuFragmentBinding>() {
|
||||||
viewModel.updateAccountsList()
|
viewModel.updateAccountsList()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sharedViewModel.defaultAccountChanged.observe(
|
||||||
|
viewLifecycleOwner
|
||||||
|
) {
|
||||||
|
Log.i("[Side Menu] Default account changed, update accounts list")
|
||||||
|
viewModel.updateAccountsList()
|
||||||
|
}
|
||||||
|
|
||||||
viewModel.accountsSettingsListener = object : SettingListenerStub() {
|
viewModel.accountsSettingsListener = object : SettingListenerStub() {
|
||||||
override fun onAccountClicked(identity: String) {
|
override fun onAccountClicked(identity: String) {
|
||||||
val args = Bundle()
|
val args = Bundle()
|
||||||
|
|
|
@ -83,7 +83,6 @@ class SideMenuViewModel : ViewModel() {
|
||||||
accounts.value.orEmpty().forEach(AccountSettingsViewModel::destroy)
|
accounts.value.orEmpty().forEach(AccountSettingsViewModel::destroy)
|
||||||
|
|
||||||
val list = arrayListOf<AccountSettingsViewModel>()
|
val list = arrayListOf<AccountSettingsViewModel>()
|
||||||
if (coreContext.core.accountList.isNotEmpty()) {
|
|
||||||
val defaultAccount = coreContext.core.defaultAccount
|
val defaultAccount = coreContext.core.defaultAccount
|
||||||
if (defaultAccount != null) {
|
if (defaultAccount != null) {
|
||||||
val defaultViewModel = AccountSettingsViewModel(defaultAccount)
|
val defaultViewModel = AccountSettingsViewModel(defaultAccount)
|
||||||
|
@ -96,7 +95,7 @@ class SideMenuViewModel : ViewModel() {
|
||||||
defaultAccountFound.value = true
|
defaultAccountFound.value = true
|
||||||
}
|
}
|
||||||
|
|
||||||
for (account in coreContext.core.accountList) {
|
for (account in LinphoneUtils.getAccountsNotHidden()) {
|
||||||
if (account != coreContext.core.defaultAccount) {
|
if (account != coreContext.core.defaultAccount) {
|
||||||
val viewModel = AccountSettingsViewModel(account)
|
val viewModel = AccountSettingsViewModel(account)
|
||||||
viewModel.accountsSettingsListener = object : SettingListenerStub() {
|
viewModel.accountsSettingsListener = object : SettingListenerStub() {
|
||||||
|
@ -107,7 +106,6 @@ class SideMenuViewModel : ViewModel() {
|
||||||
list.add(viewModel)
|
list.add(viewModel)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
accounts.value = list
|
accounts.value = list
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -88,6 +88,8 @@ class SharedMainViewModel : ViewModel() {
|
||||||
|
|
||||||
/* Accounts */
|
/* Accounts */
|
||||||
|
|
||||||
|
val defaultAccountChanged = MutableLiveData<Boolean>()
|
||||||
|
|
||||||
val accountRemoved = MutableLiveData<Boolean>()
|
val accountRemoved = MutableLiveData<Boolean>()
|
||||||
|
|
||||||
val accountSettingsFragmentOpenedEvent: MutableLiveData<Event<Boolean>> by lazy {
|
val accountSettingsFragmentOpenedEvent: MutableLiveData<Event<Boolean>> by lazy {
|
||||||
|
|
|
@ -222,5 +222,17 @@ class LinphoneUtils {
|
||||||
remoteSipUri.clean()
|
remoteSipUri.clean()
|
||||||
return "${localSipUri.asStringUriOnly()}~${remoteSipUri.asStringUriOnly()}"
|
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