mirror of
https://gitlab.linphone.org/BC/public/linphone-android.git
synced 2026-01-17 11:28:06 +00:00
Fixed issue with byNavGraphViewModel
This commit is contained in:
parent
594bcffd7c
commit
619ab8a6ed
21 changed files with 244 additions and 186 deletions
|
|
@ -52,7 +52,7 @@ class LoginFragment : Fragment() {
|
|||
private lateinit var binding: AssistantLoginFragmentBinding
|
||||
|
||||
private val viewModel: AccountLoginViewModel by navGraphViewModels(
|
||||
R.id.loginFragment
|
||||
R.id.assistant_nav_graph
|
||||
)
|
||||
|
||||
override fun onCreateView(
|
||||
|
|
|
|||
|
|
@ -47,7 +47,7 @@ class QrCodeScannerFragment : Fragment() {
|
|||
private lateinit var binding: AssistantQrCodeScannerFragmentBinding
|
||||
|
||||
private val viewModel: QrCodeViewModel by navGraphViewModels(
|
||||
R.id.qrCodeScannerFragment
|
||||
R.id.assistant_nav_graph
|
||||
)
|
||||
|
||||
private val requestPermissionLauncher = registerForActivityResult(
|
||||
|
|
@ -84,11 +84,13 @@ class QrCodeScannerFragment : Fragment() {
|
|||
viewModel.qrCodeFoundEvent.observe(viewLifecycleOwner) {
|
||||
it.consume { isValid ->
|
||||
if (isValid) {
|
||||
// TODO FIXME: show translated string
|
||||
(requireActivity() as AssistantActivity).showGreenToast(
|
||||
"QR code validated!",
|
||||
R.drawable.check_fat_fill
|
||||
)
|
||||
} else {
|
||||
// TODO FIXME: show translated string
|
||||
(requireActivity() as AssistantActivity).showRedToast(
|
||||
"Invalid QR code!",
|
||||
R.drawable.warning_circle
|
||||
|
|
|
|||
|
|
@ -43,7 +43,7 @@ class RegisterCodeConfirmationFragment : Fragment() {
|
|||
private lateinit var binding: AssistantRegisterConfirmSmsCodeFragmentBinding
|
||||
|
||||
private val viewModel: AccountCreationViewModel by navGraphViewModels(
|
||||
R.id.registerCodeConfirmationFragment
|
||||
R.id.assistant_nav_graph
|
||||
)
|
||||
|
||||
override fun onCreateView(
|
||||
|
|
|
|||
|
|
@ -52,7 +52,7 @@ class RegisterFragment : Fragment() {
|
|||
private lateinit var binding: AssistantRegisterFragmentBinding
|
||||
|
||||
private val viewModel: AccountCreationViewModel by navGraphViewModels(
|
||||
R.id.registerFragment
|
||||
R.id.assistant_nav_graph
|
||||
)
|
||||
|
||||
override fun onCreateView(
|
||||
|
|
|
|||
|
|
@ -49,7 +49,7 @@ class ThirdPartySipAccountLoginFragment : Fragment() {
|
|||
private lateinit var binding: AssistantThirdPartySipAccountLoginFragmentBinding
|
||||
|
||||
private val viewModel: ThirdPartySipAccountLoginViewModel by navGraphViewModels(
|
||||
R.id.thirdPartySipAccountLoginFragment
|
||||
R.id.assistant_nav_graph
|
||||
)
|
||||
|
||||
private val dropdownListener = object : AdapterView.OnItemSelectedListener {
|
||||
|
|
|
|||
|
|
@ -64,6 +64,8 @@ class AccountCreationViewModel @UiThread constructor() : ViewModel(), CountryPic
|
|||
|
||||
val createEnabled = MediatorLiveData<Boolean>()
|
||||
|
||||
val confirmationMessage = MutableLiveData<String>()
|
||||
|
||||
val smsCodeFirstDigit = MutableLiveData<String>()
|
||||
val smsCodeSecondDigit = MutableLiveData<String>()
|
||||
val smsCodeThirdDigit = MutableLiveData<String>()
|
||||
|
|
@ -95,6 +97,7 @@ class AccountCreationViewModel @UiThread constructor() : ViewModel(), CountryPic
|
|||
AccountCreator.Status.AccountExist, AccountCreator.Status.AccountExistWithAlias -> {
|
||||
operationInProgress.postValue(false)
|
||||
createEnabled.postValue(false)
|
||||
// TODO FIXME: use translated string
|
||||
usernameError.postValue("Account already exists")
|
||||
}
|
||||
AccountCreator.Status.AccountNotExist -> {
|
||||
|
|
@ -102,8 +105,10 @@ class AccountCreationViewModel @UiThread constructor() : ViewModel(), CountryPic
|
|||
checkPhoneNumber()
|
||||
}
|
||||
else -> {
|
||||
Log.e("$TAG An unexpected error occurred!")
|
||||
operationInProgress.postValue(false)
|
||||
createEnabled.postValue(false)
|
||||
// TODO FIXME: use translated string
|
||||
phoneNumberError.postValue(status.name)
|
||||
}
|
||||
}
|
||||
|
|
@ -120,6 +125,7 @@ class AccountCreationViewModel @UiThread constructor() : ViewModel(), CountryPic
|
|||
AccountCreator.Status.AliasExist, AccountCreator.Status.AliasIsAccount -> {
|
||||
operationInProgress.postValue(false)
|
||||
createEnabled.postValue(false)
|
||||
// TODO FIXME: use translated string
|
||||
phoneNumberError.postValue("Phone number already used")
|
||||
}
|
||||
AccountCreator.Status.AliasNotExist -> {
|
||||
|
|
@ -127,8 +133,10 @@ class AccountCreationViewModel @UiThread constructor() : ViewModel(), CountryPic
|
|||
createAccount()
|
||||
}
|
||||
else -> {
|
||||
Log.e("$TAG An unexpected error occurred!")
|
||||
operationInProgress.postValue(false)
|
||||
createEnabled.postValue(false)
|
||||
// TODO FIXME: use translated string
|
||||
phoneNumberError.postValue(status.name)
|
||||
}
|
||||
}
|
||||
|
|
@ -149,7 +157,8 @@ class AccountCreationViewModel @UiThread constructor() : ViewModel(), CountryPic
|
|||
goToSmsCodeConfirmationViewEvent.postValue(Event(true))
|
||||
}
|
||||
else -> {
|
||||
// TODO
|
||||
Log.e("$TAG Account couldn't be created, an unexpected error occurred!")
|
||||
// TODO: show error message to user
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -167,7 +176,8 @@ class AccountCreationViewModel @UiThread constructor() : ViewModel(), CountryPic
|
|||
Log.i("$TAG Account has been successfully activated, going to login page")
|
||||
goToLoginPageEvent.postValue(Event(true))
|
||||
} else {
|
||||
// TODO
|
||||
Log.e("$TAG Account couldn't be activated, an unexpected error occurred!")
|
||||
// TODO: show error message to user
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -273,20 +283,42 @@ class AccountCreationViewModel @UiThread constructor() : ViewModel(), CountryPic
|
|||
prefix
|
||||
}
|
||||
val number = phoneNumber.value.orEmpty().trim()
|
||||
accountCreator.setPhoneNumber(number, digitsPrefix)
|
||||
|
||||
val normalizedPhoneNumber = accountCreator.phoneNumber
|
||||
if (!normalizedPhoneNumber.isNullOrEmpty()) {
|
||||
normalizedPhoneNumberEvent.postValue(Event(normalizedPhoneNumber))
|
||||
val status = accountCreator.setPhoneNumber(number, digitsPrefix)
|
||||
if (status == AccountCreator.PhoneNumberStatus.Ok.toInt()) {
|
||||
val normalizedPhoneNumber = accountCreator.phoneNumber
|
||||
|
||||
// TODO FIXME: use translated string
|
||||
val message = "We have sent a verification code on your phone number “$normalizedPhoneNumber”.\n\nPlease enter the verification code below:"
|
||||
confirmationMessage.postValue(message)
|
||||
|
||||
Log.i(
|
||||
"$TAG Normalized phone number from [$number] and prefix [$digitsPrefix] is [$normalizedPhoneNumber]"
|
||||
)
|
||||
if (!normalizedPhoneNumber.isNullOrEmpty()) {
|
||||
normalizedPhoneNumberEvent.postValue(Event(normalizedPhoneNumber))
|
||||
} else {
|
||||
Log.e(
|
||||
"$TAG Failed to compute phone number using international prefix [$digitsPrefix] and number [$number]"
|
||||
)
|
||||
operationInProgress.postValue(false)
|
||||
// TODO FIXME: use translated string
|
||||
phoneNumberError.postValue(
|
||||
"Wrong international prefix / local phone number"
|
||||
)
|
||||
}
|
||||
} else {
|
||||
Log.e(
|
||||
"$TAG Failed to compute phone number using international prefix [$digitsPrefix] and number [$number]"
|
||||
"$TAG Failed to set phone number [$number] and prefix [$digitsPrefix] into account creator!"
|
||||
)
|
||||
// TODO FIXME: use translated string
|
||||
phoneNumberError.postValue(
|
||||
"Failed to configure phone number and prefix in account creator!"
|
||||
)
|
||||
operationInProgress.postValue(false)
|
||||
phoneNumberError.postValue("Wrong international prefix / local phone number")
|
||||
}
|
||||
} else {
|
||||
Log.e("$TAG Account creator hasn't been initialized!")
|
||||
// TODO: show error message to user
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -330,6 +362,7 @@ class AccountCreationViewModel @UiThread constructor() : ViewModel(), CountryPic
|
|||
if (status != AccountCreator.Status.RequestOk) {
|
||||
Log.e("$TAG Can't activate account [$status]")
|
||||
operationInProgress.postValue(false)
|
||||
// TODO: show error message to user
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -347,6 +380,7 @@ class AccountCreationViewModel @UiThread constructor() : ViewModel(), CountryPic
|
|||
if (status != AccountCreator.Status.RequestOk) {
|
||||
Log.e("$TAG Can't check if account already exists [$status]")
|
||||
operationInProgress.postValue(false)
|
||||
// TODO: show error message to user
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -359,6 +393,7 @@ class AccountCreationViewModel @UiThread constructor() : ViewModel(), CountryPic
|
|||
if (status != AccountCreator.Status.RequestOk) {
|
||||
Log.e("$TAG Can't check if phone number is already used [$status]")
|
||||
operationInProgress.postValue(false)
|
||||
// TODO: show error message to user
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -373,6 +408,7 @@ class AccountCreationViewModel @UiThread constructor() : ViewModel(), CountryPic
|
|||
if (status != AccountCreator.Status.RequestOk) {
|
||||
Log.e("$TAG Can't create account [$status]")
|
||||
operationInProgress.postValue(false)
|
||||
// TODO: show error message to user
|
||||
} else {
|
||||
Log.i("$TAG createAccount consumed our token, setting it to null")
|
||||
accountCreator.token = null
|
||||
|
|
@ -434,5 +470,6 @@ class AccountCreationViewModel @UiThread constructor() : ViewModel(), CountryPic
|
|||
private fun onFlexiApiTokenRequestError() {
|
||||
Log.e("$TAG Flexi API token request by push error!")
|
||||
operationInProgress.postValue(false)
|
||||
// TODO: show error message to user
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -82,6 +82,7 @@ class AccountLoginViewModel @UiThread constructor() : ViewModel() {
|
|||
} else if (state == RegistrationState.Failed) {
|
||||
registrationInProgress.postValue(false)
|
||||
core.removeListener(this)
|
||||
// TODO: show translated string
|
||||
accountLoginErrorEvent.postValue(Event(message))
|
||||
|
||||
Log.e("$TAG Account failed to REGISTER, removing it")
|
||||
|
|
|
|||
|
|
@ -93,6 +93,7 @@ class ThirdPartySipAccountLoginViewModel @UiThread constructor() : ViewModel() {
|
|||
} else if (state == RegistrationState.Failed) {
|
||||
registrationInProgress.postValue(false)
|
||||
core.removeListener(this)
|
||||
// TODO: show translated string
|
||||
accountLoginErrorEvent.postValue(Event(message))
|
||||
|
||||
Log.e("$TAG Account failed to REGISTER, removing it")
|
||||
|
|
|
|||
|
|
@ -118,6 +118,7 @@ class CallFragment : GenericFragment() {
|
|||
it.consume {
|
||||
sharedViewModel.forceRefreshCallLogsListEvent.value = Event(true)
|
||||
|
||||
// TODO FIXME: show translated string
|
||||
(requireActivity() as MainActivity).showGreenToast(
|
||||
"Historique supprimé",
|
||||
R.drawable.check_fat_fill
|
||||
|
|
@ -132,6 +133,7 @@ class CallFragment : GenericFragment() {
|
|||
val label = "SIP address"
|
||||
clipboard.setPrimaryClip(ClipData.newPlainText(label, value))
|
||||
|
||||
// TODO FIXME: show translated string
|
||||
(requireActivity() as MainActivity).showGreenToast(
|
||||
"Numéro copié dans le presse-papier",
|
||||
R.drawable.check_fat_fill
|
||||
|
|
|
|||
|
|
@ -158,6 +158,7 @@ class CallsListFragment : GenericFragment() {
|
|||
|
||||
listViewModel.historyDeletedEvent.observe(viewLifecycleOwner) {
|
||||
it.consume {
|
||||
// TODO FIXME: show translated string
|
||||
(requireActivity() as MainActivity).showGreenToast(
|
||||
"Historique supprimé",
|
||||
R.drawable.check_fat_fill
|
||||
|
|
@ -227,6 +228,7 @@ class CallsListFragment : GenericFragment() {
|
|||
val label = "SIP address"
|
||||
clipboard.setPrimaryClip(ClipData.newPlainText(label, value))
|
||||
|
||||
// TODO FIXME: show translated string
|
||||
(requireActivity() as MainActivity).showGreenToast(
|
||||
"Numéro copié dans le presse-papier",
|
||||
R.drawable.check_fat_fill
|
||||
|
|
|
|||
|
|
@ -58,11 +58,11 @@ class StartCallFragment : GenericFragment() {
|
|||
private lateinit var binding: CallStartFragmentBinding
|
||||
|
||||
private val viewModel: StartCallViewModel by navGraphViewModels(
|
||||
R.id.startCallFragment
|
||||
R.id.voip_nav_graph
|
||||
)
|
||||
|
||||
private val contactsListViewModel: ContactsListViewModel by navGraphViewModels(
|
||||
R.id.startCallFragment
|
||||
R.id.voip_nav_graph
|
||||
)
|
||||
|
||||
private lateinit var contactsAdapter: ContactsListAdapter
|
||||
|
|
|
|||
|
|
@ -212,6 +212,7 @@ class ContactFragment : GenericFragment() {
|
|||
val label = if (isSip) "SIP address" else "Phone number"
|
||||
clipboard.setPrimaryClip(ClipData.newPlainText(label, value))
|
||||
|
||||
// TODO FIXME: show translated string
|
||||
(requireActivity() as MainActivity).showGreenToast(
|
||||
"Numéro copié dans le presse-papier",
|
||||
R.drawable.check_fat_fill
|
||||
|
|
|
|||
|
|
@ -56,7 +56,7 @@ class EditContactFragment : GenericFragment() {
|
|||
private lateinit var binding: ContactNewOrEditFragmentBinding
|
||||
|
||||
private val viewModel: ContactNewOrEditViewModel by navGraphViewModels(
|
||||
R.id.editContactFragment
|
||||
R.id.main_nav_graph
|
||||
)
|
||||
|
||||
private val args: EditContactFragmentArgs by navArgs()
|
||||
|
|
|
|||
|
|
@ -57,7 +57,7 @@ class NewContactFragment : GenericFragment() {
|
|||
private lateinit var binding: ContactNewOrEditFragmentBinding
|
||||
|
||||
private val viewModel: ContactNewOrEditViewModel by navGraphViewModels(
|
||||
R.id.newContactFragment
|
||||
R.id.main_nav_graph
|
||||
)
|
||||
|
||||
private val backPressedCallback = object : OnBackPressedCallback(true) {
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@ import org.linphone.ui.main.conversations.viewmodel.ConversationViewModel
|
|||
class ConversationFragment : Fragment() {
|
||||
private lateinit var binding: ConversationFragmentBinding
|
||||
private val viewModel: ConversationViewModel by navGraphViewModels(
|
||||
R.id.conversationFragment
|
||||
R.id.main_nav_graph
|
||||
)
|
||||
private lateinit var adapter: ChatEventLogsListAdapter
|
||||
|
||||
|
|
|
|||
|
|
@ -41,7 +41,7 @@ import org.linphone.ui.main.conversations.viewmodel.ConversationsListViewModel
|
|||
class ConversationsFragment : Fragment() {
|
||||
private lateinit var binding: ConversationsFragmentBinding
|
||||
private val listViewModel: ConversationsListViewModel by navGraphViewModels(
|
||||
R.id.conversationsFragment
|
||||
R.id.main_nav_graph
|
||||
)
|
||||
private lateinit var adapter: ConversationsListAdapter
|
||||
|
||||
|
|
|
|||
|
|
@ -40,7 +40,7 @@ class NewConversationFragment : Fragment() {
|
|||
private lateinit var binding: ConversationStartFragmentBinding
|
||||
private lateinit var adapter: ContactsSelectionAdapter
|
||||
private val viewModel: NewConversationViewModel by navGraphViewModels(
|
||||
R.id.conversationsFragment
|
||||
R.id.main_nav_graph
|
||||
)
|
||||
|
||||
override fun onCreateAnimation(transit: Int, enter: Boolean, nextAnim: Int): Animation? {
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@ class AccountProfileFragment : GenericFragment() {
|
|||
private lateinit var binding: AccountProfileFragmentBinding
|
||||
|
||||
private val viewModel: AccountProfileViewModel by navGraphViewModels(
|
||||
R.id.accountProfileFragment
|
||||
R.id.main_nav_graph
|
||||
)
|
||||
|
||||
private val args: AccountProfileFragmentArgs by navArgs()
|
||||
|
|
|
|||
|
|
@ -136,9 +136,11 @@ class VoipActivity : AppCompatActivity() {
|
|||
callsViewModel.showLowSignalEvent.observe(this) {
|
||||
it.consume { show ->
|
||||
if (show) {
|
||||
// TODO FIXME: show translated string
|
||||
showRedToast("Low Wi-Fi signal!", R.drawable.wifi_low)
|
||||
} else {
|
||||
hideRedToast()
|
||||
// TODO FIXME: show translated string
|
||||
showGreenToast("Wi-Fi signal no longer low", R.drawable.wifi_high)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -120,7 +120,7 @@
|
|||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="end|bottom"
|
||||
android:layout_margin="16dp"
|
||||
android:src="@drawable/plus_circle"
|
||||
android:src="@drawable/phone_plus"
|
||||
app:tint="@color/gray_8"
|
||||
app:backgroundTint="@color/white"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
|
|
|
|||
|
|
@ -14,181 +14,191 @@
|
|||
type="org.linphone.ui.assistant.viewmodel.AccountCreationViewModel" />
|
||||
</data>
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
<androidx.coordinatorlayout.widget.CoordinatorLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<ImageView
|
||||
android:onClick="@{backClickListener}"
|
||||
android:id="@+id/back"
|
||||
android:layout_width="@dimen/icon_size"
|
||||
android:layout_height="@dimen/icon_size"
|
||||
android:layout_marginTop="7dp"
|
||||
android:layout_marginStart="15dp"
|
||||
android:src="@drawable/caret_left"
|
||||
app:tint="@color/gray_1"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"/>
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/image"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="0dp"
|
||||
android:src="@drawable/header"
|
||||
android:adjustViewBounds="true"
|
||||
android:scaleType="centerCrop"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/back"
|
||||
app:layout_constraintBottom_toBottomOf="@id/title"/>
|
||||
<ImageView
|
||||
android:onClick="@{backClickListener}"
|
||||
android:id="@+id/back"
|
||||
android:layout_width="@dimen/icon_size"
|
||||
android:layout_height="@dimen/icon_size"
|
||||
android:layout_marginTop="7dp"
|
||||
android:layout_marginStart="15dp"
|
||||
android:src="@drawable/caret_left"
|
||||
app:tint="@color/gray_1"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"/>
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
style="@style/default_text_style_800"
|
||||
android:id="@+id/title"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="100dp"
|
||||
android:paddingBottom="30dp"
|
||||
android:text="Register"
|
||||
android:textSize="20sp"
|
||||
android:textColor="@color/white"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"/>
|
||||
<ImageView
|
||||
android:id="@+id/image"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="0dp"
|
||||
android:src="@drawable/header"
|
||||
android:adjustViewBounds="true"
|
||||
android:scaleType="centerCrop"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/back"
|
||||
app:layout_constraintBottom_toBottomOf="@id/title"/>
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
style="@style/default_text_style"
|
||||
android:id="@+id/message"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="100dp"
|
||||
android:layout_marginStart="16dp"
|
||||
android:layout_marginEnd="16dp"
|
||||
android:text="We have sent a verification code on your phone number “06945345435”.\n\nPlease enter the verification code below:"
|
||||
android:textSize="14sp"
|
||||
android:textColor="@color/gray_9"
|
||||
android:gravity="center_horizontal"
|
||||
app:layout_constraintTop_toBottomOf="@id/title"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"/>
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
style="@style/default_text_style_800"
|
||||
android:id="@+id/title"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="100dp"
|
||||
android:paddingBottom="30dp"
|
||||
android:text="Register"
|
||||
android:textSize="20sp"
|
||||
android:textColor="@color/white"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"/>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/illu"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="0dp"
|
||||
android:layout_marginTop="100dp"
|
||||
android:adjustViewBounds="true"
|
||||
android:src="@drawable/confirm_sms_code_illu"
|
||||
app:layout_constraintTop_toBottomOf="@id/wrong_number"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent" />
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
style="@style/default_text_style"
|
||||
android:id="@+id/message"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="100dp"
|
||||
android:layout_marginStart="16dp"
|
||||
android:layout_marginEnd="16dp"
|
||||
android:text="@{viewModel.confirmationMessage, default=`We have sent a verification code on your phone number.\n\nPlease enter the verification code below:`}"
|
||||
android:textSize="14sp"
|
||||
android:textColor="@color/gray_9"
|
||||
android:gravity="center_horizontal"
|
||||
app:layout_constraintTop_toBottomOf="@id/title"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"/>
|
||||
|
||||
<androidx.appcompat.widget.AppCompatEditText
|
||||
focusNextOnInput="@{true}"
|
||||
style="@style/default_text_style_300"
|
||||
android:id="@+id/code_first_digit"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="0dp"
|
||||
android:layout_marginTop="32dp"
|
||||
android:background="@drawable/shape_assistant_sms_code_confirmation"
|
||||
android:text="@={viewModel.smsCodeFirstDigit, default=`1`}"
|
||||
android:maxLength="1"
|
||||
android:textColor="@color/assistant_sms_confirmation_code_color"
|
||||
android:textSize="50sp"
|
||||
android:textCursorDrawable="@color/transparent_color"
|
||||
android:gravity="center"
|
||||
android:inputType="number"
|
||||
android:imeOptions="actionNext"
|
||||
android:nextFocusDown="@id/code_second_digit"
|
||||
app:layout_constraintDimensionRatio="1:1"
|
||||
app:layout_constraintTop_toBottomOf="@id/message"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toStartOf="@id/code_second_digit" />
|
||||
<ImageView
|
||||
android:id="@+id/illu"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="0dp"
|
||||
android:layout_marginTop="100dp"
|
||||
android:adjustViewBounds="true"
|
||||
android:src="@drawable/confirm_sms_code_illu"
|
||||
app:layout_constraintTop_toBottomOf="@id/wrong_number"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatEditText
|
||||
focusNextOnInput="@{true}"
|
||||
style="@style/default_text_style_300"
|
||||
android:id="@+id/code_second_digit"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="0dp"
|
||||
android:layout_marginTop="32dp"
|
||||
android:background="@drawable/shape_assistant_sms_code_confirmation"
|
||||
android:text="@={viewModel.smsCodeSecondDigit, default=`2`}"
|
||||
android:maxLength="1"
|
||||
android:textColor="@color/assistant_sms_confirmation_code_color"
|
||||
android:textSize="50sp"
|
||||
android:textCursorDrawable="@color/transparent_color"
|
||||
android:gravity="center"
|
||||
android:inputType="number"
|
||||
android:imeOptions="actionNext"
|
||||
android:nextFocusDown="@id/code_third_digit"
|
||||
app:layout_constraintDimensionRatio="1:1"
|
||||
app:layout_constraintTop_toBottomOf="@id/message"
|
||||
app:layout_constraintStart_toEndOf="@id/code_first_digit"
|
||||
app:layout_constraintEnd_toStartOf="@id/code_third_digit" />
|
||||
<androidx.appcompat.widget.AppCompatEditText
|
||||
focusNextOnInput="@{true}"
|
||||
style="@style/default_text_style_300"
|
||||
android:id="@+id/code_first_digit"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="0dp"
|
||||
android:layout_marginTop="32dp"
|
||||
android:background="@drawable/shape_assistant_sms_code_confirmation"
|
||||
android:text="@={viewModel.smsCodeFirstDigit, default=`1`}"
|
||||
android:maxLength="1"
|
||||
android:textColor="@color/assistant_sms_confirmation_code_color"
|
||||
android:textSize="50sp"
|
||||
android:textCursorDrawable="@color/transparent_color"
|
||||
android:gravity="center"
|
||||
android:inputType="number"
|
||||
android:imeOptions="actionNext"
|
||||
android:nextFocusDown="@id/code_second_digit"
|
||||
app:layout_constraintDimensionRatio="1:1"
|
||||
app:layout_constraintTop_toBottomOf="@id/message"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toStartOf="@id/code_second_digit" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatEditText
|
||||
focusNextOnInput="@{true}"
|
||||
style="@style/default_text_style_300"
|
||||
android:id="@+id/code_third_digit"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="0dp"
|
||||
android:layout_marginTop="32dp"
|
||||
android:background="@drawable/shape_assistant_sms_code_confirmation"
|
||||
android:text="@={viewModel.smsCodeThirdDigit, default=`3`}"
|
||||
android:maxLength="1"
|
||||
android:textColor="@color/assistant_sms_confirmation_code_color"
|
||||
android:textSize="50sp"
|
||||
android:textCursorDrawable="@color/transparent_color"
|
||||
android:gravity="center"
|
||||
android:inputType="number"
|
||||
android:imeOptions="actionNext"
|
||||
android:nextFocusDown="@id/code_last_digit"
|
||||
app:layout_constraintDimensionRatio="1:1"
|
||||
app:layout_constraintTop_toBottomOf="@id/message"
|
||||
app:layout_constraintStart_toEndOf="@id/code_second_digit"
|
||||
app:layout_constraintEnd_toStartOf="@id/code_last_digit" />
|
||||
<androidx.appcompat.widget.AppCompatEditText
|
||||
focusNextOnInput="@{true}"
|
||||
style="@style/default_text_style_300"
|
||||
android:id="@+id/code_second_digit"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="0dp"
|
||||
android:layout_marginTop="32dp"
|
||||
android:background="@drawable/shape_assistant_sms_code_confirmation"
|
||||
android:text="@={viewModel.smsCodeSecondDigit, default=`2`}"
|
||||
android:maxLength="1"
|
||||
android:textColor="@color/assistant_sms_confirmation_code_color"
|
||||
android:textSize="50sp"
|
||||
android:textCursorDrawable="@color/transparent_color"
|
||||
android:gravity="center"
|
||||
android:inputType="number"
|
||||
android:imeOptions="actionNext"
|
||||
android:nextFocusDown="@id/code_third_digit"
|
||||
app:layout_constraintDimensionRatio="1:1"
|
||||
app:layout_constraintTop_toBottomOf="@id/message"
|
||||
app:layout_constraintStart_toEndOf="@id/code_first_digit"
|
||||
app:layout_constraintEnd_toStartOf="@id/code_third_digit" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatEditText
|
||||
validateOnInput="@{() -> viewModel.validateCode()}"
|
||||
style="@style/default_text_style_300"
|
||||
android:id="@+id/code_last_digit"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="0dp"
|
||||
android:layout_marginTop="32dp"
|
||||
android:background="@drawable/shape_assistant_sms_code_confirmation"
|
||||
android:text="@={viewModel.smsCodeLastDigit, default=`4`}"
|
||||
android:maxLength="1"
|
||||
android:textColor="@color/assistant_sms_confirmation_code_color"
|
||||
android:textSize="50sp"
|
||||
android:textCursorDrawable="@color/transparent_color"
|
||||
android:gravity="center"
|
||||
android:inputType="number"
|
||||
android:imeOptions="actionDone"
|
||||
app:layout_constraintDimensionRatio="1:1"
|
||||
app:layout_constraintTop_toBottomOf="@id/message"
|
||||
app:layout_constraintStart_toEndOf="@id/code_third_digit"
|
||||
app:layout_constraintEnd_toEndOf="parent" />
|
||||
<androidx.appcompat.widget.AppCompatEditText
|
||||
focusNextOnInput="@{true}"
|
||||
style="@style/default_text_style_300"
|
||||
android:id="@+id/code_third_digit"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="0dp"
|
||||
android:layout_marginTop="32dp"
|
||||
android:background="@drawable/shape_assistant_sms_code_confirmation"
|
||||
android:text="@={viewModel.smsCodeThirdDigit, default=`3`}"
|
||||
android:maxLength="1"
|
||||
android:textColor="@color/assistant_sms_confirmation_code_color"
|
||||
android:textSize="50sp"
|
||||
android:textCursorDrawable="@color/transparent_color"
|
||||
android:gravity="center"
|
||||
android:inputType="number"
|
||||
android:imeOptions="actionNext"
|
||||
android:nextFocusDown="@id/code_last_digit"
|
||||
app:layout_constraintDimensionRatio="1:1"
|
||||
app:layout_constraintTop_toBottomOf="@id/message"
|
||||
app:layout_constraintStart_toEndOf="@id/code_second_digit"
|
||||
app:layout_constraintEnd_toStartOf="@id/code_last_digit" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
style="@style/default_text_style_600"
|
||||
android:id="@+id/wrong_number"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="51dp"
|
||||
android:paddingTop="6dp"
|
||||
android:paddingBottom="6dp"
|
||||
android:paddingStart="12dp"
|
||||
android:paddingEnd="12dp"
|
||||
android:text="Wrong number?"
|
||||
android:textSize="13sp"
|
||||
android:textColor="@color/secondary_button_label_color"
|
||||
android:gravity="center"
|
||||
android:background="@drawable/secondary_button_background"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/code_first_digit" />
|
||||
<androidx.appcompat.widget.AppCompatEditText
|
||||
validateOnInput="@{() -> viewModel.validateCode()}"
|
||||
style="@style/default_text_style_300"
|
||||
android:id="@+id/code_last_digit"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="0dp"
|
||||
android:layout_marginTop="32dp"
|
||||
android:background="@drawable/shape_assistant_sms_code_confirmation"
|
||||
android:text="@={viewModel.smsCodeLastDigit, default=`4`}"
|
||||
android:maxLength="1"
|
||||
android:textColor="@color/assistant_sms_confirmation_code_color"
|
||||
android:textSize="50sp"
|
||||
android:textCursorDrawable="@color/transparent_color"
|
||||
android:gravity="center"
|
||||
android:inputType="number"
|
||||
android:imeOptions="actionDone"
|
||||
app:layout_constraintDimensionRatio="1:1"
|
||||
app:layout_constraintTop_toBottomOf="@id/message"
|
||||
app:layout_constraintStart_toEndOf="@id/code_third_digit"
|
||||
app:layout_constraintEnd_toEndOf="parent" />
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
style="@style/default_text_style_600"
|
||||
android:id="@+id/wrong_number"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="51dp"
|
||||
android:paddingTop="6dp"
|
||||
android:paddingBottom="6dp"
|
||||
android:paddingStart="12dp"
|
||||
android:paddingEnd="12dp"
|
||||
android:text="Wrong number?"
|
||||
android:textSize="13sp"
|
||||
android:textColor="@color/secondary_button_label_color"
|
||||
android:gravity="center"
|
||||
android:background="@drawable/secondary_button_background"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/code_first_digit" />
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
<include
|
||||
layout="@layout/operation_in_progress"
|
||||
bind:visibility="@{viewModel.operationInProgress}" />
|
||||
|
||||
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
||||
|
||||
</layout>
|
||||
Loading…
Add table
Reference in a new issue