diff --git a/app/src/main/java/org/linphone/ui/main/MainActivity.kt b/app/src/main/java/org/linphone/ui/main/MainActivity.kt index ed057a2a6..89d1e0df9 100644 --- a/app/src/main/java/org/linphone/ui/main/MainActivity.kt +++ b/app/src/main/java/org/linphone/ui/main/MainActivity.kt @@ -144,6 +144,13 @@ class MainActivity : GenericActivity() { } } + viewModel.showNewAccountToastEvent.observe(this) { + it.consume { + val message = getString(R.string.toast_new_account_configured) + showGreenToast(message, R.drawable.user_circle) + } + } + binding.root.doOnAttach { Log.i("$TAG Report UI has been fully drawn (TTFD)") try { @@ -259,8 +266,15 @@ class MainActivity : GenericActivity() { super.onPause() } + override fun onResume() { + super.onResume() + + viewModel.checkForNewAccount() + } + override fun onNewIntent(intent: Intent?) { super.onNewIntent(intent) + if (intent != null) { handleIntent(intent, -1, true) } diff --git a/app/src/main/java/org/linphone/ui/main/viewmodel/MainViewModel.kt b/app/src/main/java/org/linphone/ui/main/viewmodel/MainViewModel.kt index 85ec90ddb..35eb5c1fd 100644 --- a/app/src/main/java/org/linphone/ui/main/viewmodel/MainViewModel.kt +++ b/app/src/main/java/org/linphone/ui/main/viewmodel/MainViewModel.kt @@ -80,6 +80,12 @@ class MainViewModel @UiThread constructor() : ViewModel() { MutableLiveData>() } + val showNewAccountToastEvent: MutableLiveData> by lazy { + MutableLiveData>() + } + + var accountsFound = -1 + private var defaultAccountRegistrationFailed = false private val alertsList = arrayListOf>() @@ -196,6 +202,17 @@ class MainViewModel @UiThread constructor() : ViewModel() { // TODO: compute other calls notifications count } + + override fun onAccountRemoved(core: Core, account: Account) { + accountsFound -= 1 + + if (core.defaultAccount == null) { + Log.i( + "$TAG Default account was removed, setting first available account (if any) as default" + ) + core.defaultAccount = core.accountList.firstOrNull() + } + } } init { @@ -203,6 +220,8 @@ class MainViewModel @UiThread constructor() : ViewModel() { showAlert.value = false coreContext.postOnCoreThread { core -> + accountsFound = core.accountList.size + core.addListener(coreListener) if (!core.isNetworkReachable) { @@ -227,6 +246,17 @@ class MainViewModel @UiThread constructor() : ViewModel() { } } + @UiThread + fun checkForNewAccount() { + coreContext.postOnCoreThread { core -> + val count = core.accountList.size + if (count > accountsFound) { + showNewAccountToastEvent.postValue(Event(true)) + } + accountsFound = count + } + } + @UiThread fun closeTopBar() { showAlert.value = false diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 14760e5ed..dc1ab2661 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -132,6 +132,7 @@ Low cellular signal! Cellular signal is no longer low This call can be trusted + Connection successful Connection error! File has been exported to native gallery Error trying to export file to native gallery