mirror of
https://github.com/signalapp/Signal-Android.git
synced 2025-12-25 05:27:42 +00:00
Save national number when using country picker.
This commit is contained in:
@@ -26,6 +26,7 @@ data class RegistrationState(
|
||||
val sessionId: String? = null,
|
||||
val enteredCode: String = "",
|
||||
val phoneNumber: Phonenumber.PhoneNumber? = fetchExistingE164FromValues(),
|
||||
val nationalNumber: String = "",
|
||||
val inProgress: Boolean = false,
|
||||
val isReRegister: Boolean = false,
|
||||
val canSkipSms: Boolean = false,
|
||||
|
||||
@@ -112,6 +112,14 @@ class RegistrationViewModel : ViewModel() {
|
||||
val phoneNumber: Phonenumber.PhoneNumber?
|
||||
get() = store.value.phoneNumber
|
||||
|
||||
var nationalNumber: String
|
||||
get() = store.value.nationalNumber
|
||||
set(value) {
|
||||
store.update {
|
||||
it.copy(nationalNumber = value)
|
||||
}
|
||||
}
|
||||
|
||||
fun maybePrefillE164(context: Context) {
|
||||
Log.v(TAG, "maybePrefillE164()")
|
||||
if (Permissions.hasAll(context, Manifest.permission.READ_PHONE_STATE, Manifest.permission.READ_PHONE_NUMBERS)) {
|
||||
|
||||
@@ -182,6 +182,7 @@ class EnterPhoneNumberFragment : LoggingFragment(R.layout.fragment_registration_
|
||||
fragmentViewModel.uiState.observe(viewLifecycleOwner) { fragmentState ->
|
||||
if (fragmentViewModel.isEnteredNumberPossible(fragmentState)) {
|
||||
sharedViewModel.setPhoneNumber(fragmentViewModel.parsePhoneNumber(fragmentState))
|
||||
sharedViewModel.nationalNumber = ""
|
||||
} else {
|
||||
sharedViewModel.setPhoneNumber(null)
|
||||
}
|
||||
@@ -196,12 +197,16 @@ class EnterPhoneNumberFragment : LoggingFragment(R.layout.fragment_registration_
|
||||
initializeInputFields()
|
||||
|
||||
val existingPhoneNumber = sharedViewModel.phoneNumber
|
||||
val existingNationalNumber = sharedViewModel.nationalNumber
|
||||
if (existingPhoneNumber != null) {
|
||||
fragmentViewModel.restoreState(existingPhoneNumber)
|
||||
spinnerView.setText(existingPhoneNumber.countryCode.toString())
|
||||
phoneNumberInputLayout.setText(existingPhoneNumber.nationalNumber.toString())
|
||||
} else if (spinnerView.text?.isEmpty() == true) {
|
||||
spinnerView.setText(fragmentViewModel.getDefaultCountryCode(requireContext()).toString())
|
||||
phoneNumberInputLayout.setText(existingNationalNumber)
|
||||
} else {
|
||||
phoneNumberInputLayout.setText(existingNationalNumber)
|
||||
}
|
||||
|
||||
ViewUtil.focusAndShowKeyboard(phoneNumberInputLayout)
|
||||
@@ -269,6 +274,7 @@ class EnterPhoneNumberFragment : LoggingFragment(R.layout.fragment_registration_
|
||||
afterTextChanged = {
|
||||
reformatText(it)
|
||||
fragmentViewModel.setPhoneNumber(it?.toString())
|
||||
sharedViewModel.nationalNumber = it?.toString() ?: ""
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
@@ -26,6 +26,7 @@ data class RegistrationState(
|
||||
val sessionId: String? = null,
|
||||
val enteredCode: String = "",
|
||||
val phoneNumber: Phonenumber.PhoneNumber? = fetchExistingE164FromValues(),
|
||||
val nationalNumber: String = "",
|
||||
val inProgress: Boolean = false,
|
||||
val isReRegister: Boolean = false,
|
||||
val recoveryPassword: String? = null,
|
||||
|
||||
@@ -128,6 +128,14 @@ class RegistrationViewModel : ViewModel() {
|
||||
val phoneNumber: Phonenumber.PhoneNumber?
|
||||
get() = store.value.phoneNumber
|
||||
|
||||
var nationalNumber: String
|
||||
get() = store.value.nationalNumber
|
||||
set(value) {
|
||||
store.update {
|
||||
it.copy(nationalNumber = value)
|
||||
}
|
||||
}
|
||||
|
||||
fun maybePrefillE164(context: Context) {
|
||||
Log.v(TAG, "maybePrefillE164()")
|
||||
if (Permissions.hasAll(context, Manifest.permission.READ_PHONE_STATE, Manifest.permission.READ_PHONE_NUMBERS)) {
|
||||
|
||||
@@ -187,6 +187,7 @@ class EnterPhoneNumberFragment : LoggingFragment(R.layout.fragment_registration_
|
||||
fragmentViewModel.uiState.observe(viewLifecycleOwner) { fragmentState ->
|
||||
if (fragmentViewModel.isEnteredNumberPossible(fragmentState)) {
|
||||
sharedViewModel.setPhoneNumber(fragmentViewModel.parsePhoneNumber(fragmentState))
|
||||
sharedViewModel.nationalNumber = ""
|
||||
} else {
|
||||
sharedViewModel.setPhoneNumber(null)
|
||||
}
|
||||
@@ -201,12 +202,16 @@ class EnterPhoneNumberFragment : LoggingFragment(R.layout.fragment_registration_
|
||||
initializeInputFields()
|
||||
|
||||
val existingPhoneNumber = sharedViewModel.phoneNumber
|
||||
val existingNationalNumber = sharedViewModel.nationalNumber
|
||||
if (existingPhoneNumber != null) {
|
||||
fragmentViewModel.restoreState(existingPhoneNumber)
|
||||
spinnerView.setText(existingPhoneNumber.countryCode.toString())
|
||||
phoneNumberInputLayout.setText(existingPhoneNumber.nationalNumber.toString())
|
||||
} else if (spinnerView.text?.isEmpty() == true) {
|
||||
spinnerView.setText(fragmentViewModel.getDefaultCountryCode(requireContext()).toString())
|
||||
phoneNumberInputLayout.setText(existingNationalNumber)
|
||||
} else {
|
||||
phoneNumberInputLayout.setText(existingNationalNumber)
|
||||
}
|
||||
|
||||
if (enterPhoneNumberMode == EnterPhoneNumberMode.RESTART_AFTER_COLLECTION && (savedInstanceState == null && !processedResumeMode)) {
|
||||
@@ -279,6 +284,7 @@ class EnterPhoneNumberFragment : LoggingFragment(R.layout.fragment_registration_
|
||||
afterTextChanged = {
|
||||
reformatText(it)
|
||||
fragmentViewModel.setPhoneNumber(it?.toString())
|
||||
sharedViewModel.nationalNumber = it?.toString() ?: ""
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user