Removed a few TODOs in Assistant, replaced them by showing a simple error message in a SnackBar for now

This commit is contained in:
Sylvain Berfini 2021-03-25 17:23:06 +01:00
parent 7172d7cf60
commit b65270d36f
17 changed files with 115 additions and 30 deletions

View file

@ -21,4 +21,5 @@ package org.linphone.activities
interface SnackBarActivity { interface SnackBarActivity {
fun showSnackBar(resourceId: Int) fun showSnackBar(resourceId: Int)
fun showSnackBar(message: String)
} }

View file

@ -44,4 +44,8 @@ class AssistantActivity : GenericActivity(), SnackBarActivity {
override fun showSnackBar(resourceId: Int) { override fun showSnackBar(resourceId: Int) {
Snackbar.make(binding.coordinator, resourceId, Snackbar.LENGTH_LONG).show() Snackbar.make(binding.coordinator, resourceId, Snackbar.LENGTH_LONG).show()
} }
override fun showSnackBar(message: String) {
Snackbar.make(binding.coordinator, message, Snackbar.LENGTH_LONG).show()
}
} }

View file

@ -26,6 +26,7 @@ import android.os.Bundle
import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.ViewModelProvider
import org.linphone.LinphoneApplication.Companion.coreContext import org.linphone.LinphoneApplication.Companion.coreContext
import org.linphone.R import org.linphone.R
import org.linphone.activities.assistant.AssistantActivity
import org.linphone.activities.assistant.viewmodels.AccountLoginViewModel import org.linphone.activities.assistant.viewmodels.AccountLoginViewModel
import org.linphone.activities.assistant.viewmodels.AccountLoginViewModelFactory import org.linphone.activities.assistant.viewmodels.AccountLoginViewModelFactory
import org.linphone.activities.assistant.viewmodels.SharedAssistantViewModel import org.linphone.activities.assistant.viewmodels.SharedAssistantViewModel
@ -110,6 +111,12 @@ class AccountLoginFragment : AbstractPhoneFragment<AssistantAccountLoginFragment
} }
}) })
viewModel.onErrorEvent.observe(viewLifecycleOwner, {
it.consume { message ->
(requireActivity() as AssistantActivity).showSnackBar(message)
}
})
checkPermission() checkPermission()
} }
} }

View file

@ -23,6 +23,7 @@ import android.os.Bundle
import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.ViewModelProvider
import org.linphone.R import org.linphone.R
import org.linphone.activities.GenericFragment import org.linphone.activities.GenericFragment
import org.linphone.activities.assistant.AssistantActivity
import org.linphone.activities.assistant.viewmodels.EmailAccountCreationViewModel import org.linphone.activities.assistant.viewmodels.EmailAccountCreationViewModel
import org.linphone.activities.assistant.viewmodels.EmailAccountCreationViewModelFactory import org.linphone.activities.assistant.viewmodels.EmailAccountCreationViewModelFactory
import org.linphone.activities.assistant.viewmodels.SharedAssistantViewModel import org.linphone.activities.assistant.viewmodels.SharedAssistantViewModel
@ -52,5 +53,11 @@ class EmailAccountCreationFragment : GenericFragment<AssistantEmailAccountCreati
navigateToEmailAccountValidation() navigateToEmailAccountValidation()
} }
}) })
viewModel.onErrorEvent.observe(viewLifecycleOwner, {
it.consume { message ->
(requireActivity() as AssistantActivity).showSnackBar(message)
}
})
} }
} }

View file

@ -23,6 +23,7 @@ import android.os.Bundle
import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.ViewModelProvider
import org.linphone.R import org.linphone.R
import org.linphone.activities.GenericFragment import org.linphone.activities.GenericFragment
import org.linphone.activities.assistant.AssistantActivity
import org.linphone.activities.assistant.viewmodels.* import org.linphone.activities.assistant.viewmodels.*
import org.linphone.activities.main.navigateToAccountLinking import org.linphone.activities.main.navigateToAccountLinking
import org.linphone.databinding.AssistantEmailAccountValidationFragmentBinding import org.linphone.databinding.AssistantEmailAccountValidationFragmentBinding
@ -54,5 +55,11 @@ class EmailAccountValidationFragment : GenericFragment<AssistantEmailAccountVali
navigateToAccountLinking(args) navigateToAccountLinking(args)
} }
}) })
viewModel.onErrorEvent.observe(viewLifecycleOwner, {
it.consume { message ->
(requireActivity() as AssistantActivity).showSnackBar(message)
}
})
} }
} }

View file

@ -25,6 +25,7 @@ import androidx.lifecycle.ViewModelProvider
import org.linphone.LinphoneApplication.Companion.coreContext import org.linphone.LinphoneApplication.Companion.coreContext
import org.linphone.R import org.linphone.R
import org.linphone.activities.GenericFragment import org.linphone.activities.GenericFragment
import org.linphone.activities.assistant.AssistantActivity
import org.linphone.activities.assistant.viewmodels.GenericLoginViewModel import org.linphone.activities.assistant.viewmodels.GenericLoginViewModel
import org.linphone.activities.assistant.viewmodels.GenericLoginViewModelFactory import org.linphone.activities.assistant.viewmodels.GenericLoginViewModelFactory
import org.linphone.activities.assistant.viewmodels.SharedAssistantViewModel import org.linphone.activities.assistant.viewmodels.SharedAssistantViewModel
@ -79,5 +80,11 @@ class GenericAccountLoginFragment : GenericFragment<AssistantGenericAccountLogin
dialog.show() dialog.show()
} }
}) })
viewModel.onErrorEvent.observe(viewLifecycleOwner, {
it.consume { message ->
(requireActivity() as AssistantActivity).showSnackBar(message)
}
})
} }
} }

View file

@ -22,6 +22,7 @@ package org.linphone.activities.assistant.fragments
import android.os.Bundle import android.os.Bundle
import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.ViewModelProvider
import org.linphone.R import org.linphone.R
import org.linphone.activities.assistant.AssistantActivity
import org.linphone.activities.assistant.viewmodels.PhoneAccountCreationViewModel import org.linphone.activities.assistant.viewmodels.PhoneAccountCreationViewModel
import org.linphone.activities.assistant.viewmodels.PhoneAccountCreationViewModelFactory import org.linphone.activities.assistant.viewmodels.PhoneAccountCreationViewModelFactory
import org.linphone.activities.assistant.viewmodels.SharedAssistantViewModel import org.linphone.activities.assistant.viewmodels.SharedAssistantViewModel
@ -63,6 +64,12 @@ class PhoneAccountCreationFragment : AbstractPhoneFragment<AssistantPhoneAccount
} }
}) })
viewModel.onErrorEvent.observe(viewLifecycleOwner, {
it.consume { message ->
(requireActivity() as AssistantActivity).showSnackBar(message)
}
})
checkPermission() checkPermission()
} }
} }

View file

@ -23,6 +23,7 @@ import android.os.Bundle
import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.ViewModelProvider
import org.linphone.LinphoneApplication import org.linphone.LinphoneApplication
import org.linphone.R import org.linphone.R
import org.linphone.activities.assistant.AssistantActivity
import org.linphone.activities.assistant.viewmodels.* import org.linphone.activities.assistant.viewmodels.*
import org.linphone.activities.main.navigateToEchoCancellerCalibration import org.linphone.activities.main.navigateToEchoCancellerCalibration
import org.linphone.activities.main.navigateToPhoneAccountValidation import org.linphone.activities.main.navigateToPhoneAccountValidation
@ -88,6 +89,12 @@ class PhoneAccountLinkingFragment : AbstractPhoneFragment<AssistantPhoneAccountL
} }
}) })
viewModel.onErrorEvent.observe(viewLifecycleOwner, {
it.consume { message ->
(requireActivity() as AssistantActivity).showSnackBar(message)
}
})
checkPermission() checkPermission()
} }
} }

View file

@ -26,6 +26,7 @@ import androidx.lifecycle.ViewModelProvider
import org.linphone.LinphoneApplication.Companion.coreContext import org.linphone.LinphoneApplication.Companion.coreContext
import org.linphone.R import org.linphone.R
import org.linphone.activities.GenericFragment import org.linphone.activities.GenericFragment
import org.linphone.activities.assistant.AssistantActivity
import org.linphone.activities.assistant.viewmodels.PhoneAccountValidationViewModel import org.linphone.activities.assistant.viewmodels.PhoneAccountValidationViewModel
import org.linphone.activities.assistant.viewmodels.PhoneAccountValidationViewModelFactory import org.linphone.activities.assistant.viewmodels.PhoneAccountValidationViewModelFactory
import org.linphone.activities.assistant.viewmodels.SharedAssistantViewModel import org.linphone.activities.assistant.viewmodels.SharedAssistantViewModel
@ -75,6 +76,12 @@ class PhoneAccountValidationFragment : GenericFragment<AssistantPhoneAccountVali
} }
}) })
viewModel.onErrorEvent.observe(viewLifecycleOwner, {
it.consume { message ->
(requireActivity() as AssistantActivity).showSnackBar(message)
}
})
val clipboard = requireContext().getSystemService(CLIPBOARD_SERVICE) as ClipboardManager val clipboard = requireContext().getSystemService(CLIPBOARD_SERVICE) as ClipboardManager
clipboard.addPrimaryClipChangedListener { clipboard.addPrimaryClipChangedListener {
val data = clipboard.primaryClip val data = clipboard.primaryClip

View file

@ -60,6 +60,10 @@ class AccountLoginViewModel(accountCreator: AccountCreator) : AbstractPhoneViewM
MutableLiveData<Event<Boolean>>() MutableLiveData<Event<Boolean>>()
} }
val onErrorEvent: MutableLiveData<Event<String>> by lazy {
MutableLiveData<Event<String>>()
}
private val listener = object : AccountCreatorListenerStub() { private val listener = object : AccountCreatorListenerStub() {
override fun onRecoverAccount( override fun onRecoverAccount(
creator: AccountCreator, creator: AccountCreator,
@ -72,7 +76,7 @@ class AccountLoginViewModel(accountCreator: AccountCreator) : AbstractPhoneViewM
if (status == AccountCreator.Status.RequestOk) { if (status == AccountCreator.Status.RequestOk) {
goToSmsValidationEvent.value = Event(true) goToSmsValidationEvent.value = Event(true)
} else { } else {
// TODO: show error onErrorEvent.value = Event("Error: ${status.name}")
} }
} }
} }
@ -167,7 +171,7 @@ class AccountLoginViewModel(accountCreator: AccountCreator) : AbstractPhoneViewM
if (!createProxyConfig()) { if (!createProxyConfig()) {
waitForServerAnswer.value = false waitForServerAnswer.value = false
coreContext.core.removeListener(coreListener) coreContext.core.removeListener(coreListener)
// TODO: show error onErrorEvent.value = Event("Error: Failed to create account object")
} }
} else { } else {
val result = AccountCreator.PhoneNumberStatus.fromInt(accountCreator.setPhoneNumber(phoneNumber.value, prefix.value)) val result = AccountCreator.PhoneNumberStatus.fromInt(accountCreator.setPhoneNumber(phoneNumber.value, prefix.value))
@ -191,7 +195,7 @@ class AccountLoginViewModel(accountCreator: AccountCreator) : AbstractPhoneViewM
Log.i("[Assistant] [Account Login] Recover account returned $status") Log.i("[Assistant] [Account Login] Recover account returned $status")
if (status != AccountCreator.Status.RequestOk) { if (status != AccountCreator.Status.RequestOk) {
waitForServerAnswer.value = false waitForServerAnswer.value = false
// TODO: show error onErrorEvent.value = Event("Error: ${status.name}")
} }
} }
} }
@ -210,7 +214,7 @@ class AccountLoginViewModel(accountCreator: AccountCreator) : AbstractPhoneViewM
if (proxyConfig == null) { if (proxyConfig == null) {
Log.e("[Assistant] [Account Login] Account creator couldn't create proxy config") Log.e("[Assistant] [Account Login] Account creator couldn't create proxy config")
// TODO: show error onErrorEvent.value = Event("Error: Failed to create account object")
return false return false
} }

View file

@ -58,6 +58,10 @@ class EmailAccountCreationViewModel(val accountCreator: AccountCreator) : ViewMo
val goToEmailValidationEvent = MutableLiveData<Event<Boolean>>() val goToEmailValidationEvent = MutableLiveData<Event<Boolean>>()
val onErrorEvent: MutableLiveData<Event<String>> by lazy {
MutableLiveData<Event<String>>()
}
private val listener = object : AccountCreatorListenerStub() { private val listener = object : AccountCreatorListenerStub() {
override fun onIsAccountExist( override fun onIsAccountExist(
creator: AccountCreator, creator: AccountCreator,
@ -74,12 +78,12 @@ class EmailAccountCreationViewModel(val accountCreator: AccountCreator) : ViewMo
val createAccountStatus = creator.createAccount() val createAccountStatus = creator.createAccount()
if (createAccountStatus != AccountCreator.Status.RequestOk) { if (createAccountStatus != AccountCreator.Status.RequestOk) {
waitForServerAnswer.value = false waitForServerAnswer.value = false
// TODO: show error onErrorEvent.value = Event("Error: ${status.name}")
} }
} }
else -> { else -> {
waitForServerAnswer.value = false waitForServerAnswer.value = false
// TODO: show error onErrorEvent.value = Event("Error: ${status.name}")
} }
} }
} }
@ -97,7 +101,7 @@ class EmailAccountCreationViewModel(val accountCreator: AccountCreator) : ViewMo
goToEmailValidationEvent.value = Event(true) goToEmailValidationEvent.value = Event(true)
} }
else -> { else -> {
// TODO: show error onErrorEvent.value = Event("Error: ${status.name}")
} }
} }
} }
@ -148,7 +152,7 @@ class EmailAccountCreationViewModel(val accountCreator: AccountCreator) : ViewMo
Log.i("[Assistant] [Account Creation] Account exists returned $status") Log.i("[Assistant] [Account Creation] Account exists returned $status")
if (status != AccountCreator.Status.RequestOk) { if (status != AccountCreator.Status.RequestOk) {
waitForServerAnswer.value = false waitForServerAnswer.value = false
// TODO: show error onErrorEvent.value = Event("Error: ${status.name}")
} }
} }

View file

@ -44,6 +44,10 @@ class EmailAccountValidationViewModel(val accountCreator: AccountCreator) : View
val leaveAssistantEvent = MutableLiveData<Event<Boolean>>() val leaveAssistantEvent = MutableLiveData<Event<Boolean>>()
val onErrorEvent: MutableLiveData<Event<String>> by lazy {
MutableLiveData<Event<String>>()
}
private val listener = object : AccountCreatorListenerStub() { private val listener = object : AccountCreatorListenerStub() {
override fun onIsAccountActivated( override fun onIsAccountActivated(
creator: AccountCreator, creator: AccountCreator,
@ -58,14 +62,14 @@ class EmailAccountValidationViewModel(val accountCreator: AccountCreator) : View
if (createProxyConfig()) { if (createProxyConfig()) {
leaveAssistantEvent.value = Event(true) leaveAssistantEvent.value = Event(true)
} else { } else {
// TODO: show error onErrorEvent.value = Event("Error: ${status.name}")
} }
} }
AccountCreator.Status.AccountNotActivated -> { AccountCreator.Status.AccountNotActivated -> {
// TODO: show error onErrorEvent.value = Event("Error: ${status.name}")
} }
else -> { else -> {
// TODO: show error onErrorEvent.value = Event("Error: ${status.name}")
} }
} }
} }
@ -87,7 +91,7 @@ class EmailAccountValidationViewModel(val accountCreator: AccountCreator) : View
Log.i("[Assistant] [Account Validation] Account exists returned $status") Log.i("[Assistant] [Account Validation] Account exists returned $status")
if (status != AccountCreator.Status.RequestOk) { if (status != AccountCreator.Status.RequestOk) {
waitForServerAnswer.value = false waitForServerAnswer.value = false
// TODO: show error onErrorEvent.value = Event("Error: ${status.name}")
} }
} }
@ -96,7 +100,7 @@ class EmailAccountValidationViewModel(val accountCreator: AccountCreator) : View
if (proxyConfig == null) { if (proxyConfig == null) {
Log.e("[Assistant] [Account Validation] Account creator couldn't create proxy config") Log.e("[Assistant] [Account Validation] Account creator couldn't create proxy config")
// TODO: show error onErrorEvent.value = Event("Error: Failed to create account object")
return false return false
} }

View file

@ -59,6 +59,10 @@ class GenericLoginViewModel(private val accountCreator: AccountCreator) : ViewMo
MutableLiveData<Event<Boolean>>() MutableLiveData<Event<Boolean>>()
} }
val onErrorEvent: MutableLiveData<Event<String>> by lazy {
MutableLiveData<Event<String>>()
}
private var proxyConfigToCheck: ProxyConfig? = null private var proxyConfigToCheck: ProxyConfig? = null
private val coreListener = object : CoreListenerStub() { private val coreListener = object : CoreListenerStub() {
@ -130,7 +134,7 @@ class GenericLoginViewModel(private val accountCreator: AccountCreator) : ViewMo
if (proxyConfig == null) { if (proxyConfig == null) {
Log.e("[Assistant] [Generic Login] Account creator couldn't create proxy config") Log.e("[Assistant] [Generic Login] Account creator couldn't create proxy config")
coreContext.core.removeListener(coreListener) coreContext.core.removeListener(coreListener)
// TODO: show error onErrorEvent.value = Event("Error: Failed to create account object")
return return
} }

View file

@ -54,6 +54,10 @@ class PhoneAccountCreationViewModel(accountCreator: AccountCreator) : AbstractPh
MutableLiveData<Event<Boolean>>() MutableLiveData<Event<Boolean>>()
} }
val onErrorEvent: MutableLiveData<Event<String>> by lazy {
MutableLiveData<Event<String>>()
}
private val listener = object : AccountCreatorListenerStub() { private val listener = object : AccountCreatorListenerStub() {
override fun onIsAccountExist( override fun onIsAccountExist(
creator: AccountCreator, creator: AccountCreator,
@ -75,12 +79,12 @@ class PhoneAccountCreationViewModel(accountCreator: AccountCreator) : AbstractPh
Log.i("[Phone Account Creation] createAccount returned $createAccountStatus") Log.i("[Phone Account Creation] createAccount returned $createAccountStatus")
if (createAccountStatus != AccountCreator.Status.RequestOk) { if (createAccountStatus != AccountCreator.Status.RequestOk) {
waitForServerAnswer.value = false waitForServerAnswer.value = false
// TODO: show error onErrorEvent.value = Event("Error: ${status.name}")
} }
} }
else -> { else -> {
waitForServerAnswer.value = false waitForServerAnswer.value = false
// TODO: show error onErrorEvent.value = Event("Error: ${status.name}")
} }
} }
} }
@ -100,7 +104,7 @@ class PhoneAccountCreationViewModel(accountCreator: AccountCreator) : AbstractPh
phoneNumberError.value = AppUtils.getString(R.string.assistant_error_phone_number_already_exists) phoneNumberError.value = AppUtils.getString(R.string.assistant_error_phone_number_already_exists)
} }
else -> { else -> {
// TODO: show error onErrorEvent.value = Event("Error: ${status.name}")
} }
} }
} }
@ -149,7 +153,7 @@ class PhoneAccountCreationViewModel(accountCreator: AccountCreator) : AbstractPh
Log.i("[Phone Account Creation] isAccountExist returned $status") Log.i("[Phone Account Creation] isAccountExist returned $status")
if (status != AccountCreator.Status.RequestOk) { if (status != AccountCreator.Status.RequestOk) {
waitForServerAnswer.value = false waitForServerAnswer.value = false
// TODO: show error onErrorEvent.value = Event("Error: ${status.name}")
} }
} }

View file

@ -48,6 +48,10 @@ class PhoneAccountLinkingViewModel(accountCreator: AccountCreator) : AbstractPho
val goToSmsValidationEvent = MutableLiveData<Event<Boolean>>() val goToSmsValidationEvent = MutableLiveData<Event<Boolean>>()
val onErrorEvent: MutableLiveData<Event<String>> by lazy {
MutableLiveData<Event<String>>()
}
private val listener = object : AccountCreatorListenerStub() { private val listener = object : AccountCreatorListenerStub() {
override fun onIsAliasUsed( override fun onIsAliasUsed(
creator: AccountCreator, creator: AccountCreator,
@ -61,16 +65,16 @@ class PhoneAccountLinkingViewModel(accountCreator: AccountCreator) : AbstractPho
if (creator.linkAccount() != AccountCreator.Status.RequestOk) { if (creator.linkAccount() != AccountCreator.Status.RequestOk) {
Log.e("[Phone Account Linking] linkAccount status is $status") Log.e("[Phone Account Linking] linkAccount status is $status")
waitForServerAnswer.value = false waitForServerAnswer.value = false
// TODO: show error onErrorEvent.value = Event("Error: ${status.name}")
} }
} }
AccountCreator.Status.AliasExist, AccountCreator.Status.AliasIsAccount -> { AccountCreator.Status.AliasExist, AccountCreator.Status.AliasIsAccount -> {
waitForServerAnswer.value = false waitForServerAnswer.value = false
// TODO: show error onErrorEvent.value = Event("Error: ${status.name}")
} }
else -> { else -> {
waitForServerAnswer.value = false waitForServerAnswer.value = false
// TODO: show error onErrorEvent.value = Event("Error: ${status.name}")
} }
} }
} }
@ -88,7 +92,7 @@ class PhoneAccountLinkingViewModel(accountCreator: AccountCreator) : AbstractPho
goToSmsValidationEvent.value = Event(true) goToSmsValidationEvent.value = Event(true)
} }
else -> { else -> {
// TODO: show error onErrorEvent.value = Event("Error: ${status.name}")
} }
} }
} }
@ -124,7 +128,7 @@ class PhoneAccountLinkingViewModel(accountCreator: AccountCreator) : AbstractPho
Log.i("[Phone Account Linking] isAliasUsed returned $status") Log.i("[Phone Account Linking] isAliasUsed returned $status")
if (status != AccountCreator.Status.RequestOk) { if (status != AccountCreator.Status.RequestOk) {
waitForServerAnswer.value = false waitForServerAnswer.value = false
// TODO: show error onErrorEvent.value = Event("Error: ${status.name}")
} }
} }

View file

@ -52,6 +52,10 @@ class PhoneAccountValidationViewModel(val accountCreator: AccountCreator) : View
val leaveAssistantEvent = MutableLiveData<Event<Boolean>>() val leaveAssistantEvent = MutableLiveData<Event<Boolean>>()
val onErrorEvent: MutableLiveData<Event<String>> by lazy {
MutableLiveData<Event<String>>()
}
val listener = object : AccountCreatorListenerStub() { val listener = object : AccountCreatorListenerStub() {
override fun onLoginLinphoneAccount( override fun onLoginLinphoneAccount(
creator: AccountCreator, creator: AccountCreator,
@ -65,10 +69,10 @@ class PhoneAccountValidationViewModel(val accountCreator: AccountCreator) : View
if (createProxyConfig()) { if (createProxyConfig()) {
leaveAssistantEvent.value = Event(true) leaveAssistantEvent.value = Event(true)
} else { } else {
// TODO: show error onErrorEvent.value = Event("Error: Failed to create account object")
} }
} else { } else {
// TODO: show error onErrorEvent.value = Event("Error: ${status.name}")
} }
} }
@ -85,7 +89,7 @@ class PhoneAccountValidationViewModel(val accountCreator: AccountCreator) : View
leaveAssistantEvent.value = Event(true) leaveAssistantEvent.value = Event(true)
} }
else -> { else -> {
// TODO: show error onErrorEvent.value = Event("Error: ${status.name}")
} }
} }
} }
@ -102,10 +106,10 @@ class PhoneAccountValidationViewModel(val accountCreator: AccountCreator) : View
if (createProxyConfig()) { if (createProxyConfig()) {
leaveAssistantEvent.value = Event(true) leaveAssistantEvent.value = Event(true)
} else { } else {
// TODO: show error onErrorEvent.value = Event("Error: Failed to create account object")
} }
} else { } else {
// TODO: show error onErrorEvent.value = Event("Error: ${status.name}")
} }
} }
} }
@ -133,7 +137,7 @@ class PhoneAccountValidationViewModel(val accountCreator: AccountCreator) : View
Log.i("[Assistant] [Phone Account Validation] Code validation result is $status") Log.i("[Assistant] [Phone Account Validation] Code validation result is $status")
if (status != AccountCreator.Status.RequestOk) { if (status != AccountCreator.Status.RequestOk) {
waitForServerAnswer.value = false waitForServerAnswer.value = false
// TODO: show error onErrorEvent.value = Event("Error: ${status.name}")
} }
} }
@ -142,7 +146,6 @@ class PhoneAccountValidationViewModel(val accountCreator: AccountCreator) : View
if (proxyConfig == null) { if (proxyConfig == null) {
Log.e("[Assistant] [Phone Account Validation] Account creator couldn't create proxy config") Log.e("[Assistant] [Phone Account Validation] Account creator couldn't create proxy config")
// TODO: show error
return false return false
} }

View file

@ -132,6 +132,10 @@ class MainActivity : GenericActivity(), SnackBarActivity, NavController.OnDestin
Snackbar.make(findViewById(R.id.coordinator), resourceId, Snackbar.LENGTH_LONG).show() Snackbar.make(findViewById(R.id.coordinator), resourceId, Snackbar.LENGTH_LONG).show()
} }
override fun showSnackBar(message: String) {
Snackbar.make(findViewById(R.id.coordinator), message, Snackbar.LENGTH_LONG).show()
}
override fun onPostCreate(savedInstanceState: Bundle?) { override fun onPostCreate(savedInstanceState: Bundle?) {
super.onPostCreate(savedInstanceState) super.onPostCreate(savedInstanceState)
findNavController(R.id.nav_host_fragment).addOnDestinationChangedListener(this) findNavController(R.id.nav_host_fragment).addOnDestinationChangedListener(this)