diff --git a/app/src/main/java/org/linphone/ui/main/viewmodel/AbstractMainViewModel.kt b/app/src/main/java/org/linphone/ui/main/viewmodel/AbstractMainViewModel.kt index 202fe9a98..36671d9d2 100644 --- a/app/src/main/java/org/linphone/ui/main/viewmodel/AbstractMainViewModel.kt +++ b/app/src/main/java/org/linphone/ui/main/viewmodel/AbstractMainViewModel.kt @@ -29,6 +29,7 @@ import org.linphone.core.Account import org.linphone.core.Call import org.linphone.core.ChatMessage import org.linphone.core.ChatRoom +import org.linphone.core.ConfiguringState import org.linphone.core.Core import org.linphone.core.CoreListenerStub import org.linphone.core.tools.Log @@ -122,6 +123,22 @@ open class AbstractMainViewModel @UiThread constructor() : ViewModel() { updateUnreadMessagesCount() } + @WorkerThread + override fun onConfiguringStatus(core: Core, status: ConfiguringState?, message: String?) { + if (status != ConfiguringState.Skipped) { + account.value?.destroy() + + val defaultAccount = core.defaultAccount + if (defaultAccount != null) { + Log.i("$TAG Configuring status is [$status], reload default account") + account.postValue(AccountModel(defaultAccount)) + defaultAccountChangedEvent.postValue(Event(true)) + } else { + Log.w("$TAG Configuring status is [$status] but no default account was found!") + } + } + } + @WorkerThread override fun onDefaultAccountChanged(core: Core, defaultAccount: Account?) { account.value?.destroy() diff --git a/app/src/main/java/org/linphone/ui/main/viewmodel/DrawerMenuViewModel.kt b/app/src/main/java/org/linphone/ui/main/viewmodel/DrawerMenuViewModel.kt index 0e0b923c1..acd95ebea 100644 --- a/app/src/main/java/org/linphone/ui/main/viewmodel/DrawerMenuViewModel.kt +++ b/app/src/main/java/org/linphone/ui/main/viewmodel/DrawerMenuViewModel.kt @@ -27,6 +27,7 @@ import androidx.lifecycle.ViewModel import org.linphone.LinphoneApplication.Companion.coreContext import org.linphone.LinphoneApplication.Companion.corePreferences import org.linphone.core.Account +import org.linphone.core.ConfiguringState import org.linphone.core.Core import org.linphone.core.CoreListenerStub import org.linphone.core.tools.Log @@ -97,6 +98,16 @@ class DrawerMenuViewModel @UiThread constructor() : ViewModel() { ) computeAccountsList() } + + @WorkerThread + override fun onConfiguringStatus(core: Core, status: ConfiguringState?, message: String?) { + if (status != ConfiguringState.Skipped) { + accounts.value.orEmpty().forEach(AccountModel::destroy) + + Log.i("$TAG Configuring status is [$status], reload accounts") + computeAccountsList() + } + } } init {