From 125093a2ce473be2e4e2c370db14a80d1ede333a Mon Sep 17 00:00:00 2001 From: Michelle Tang Date: Mon, 10 Feb 2025 12:00:22 -0500 Subject: [PATCH] Save national number when using country picker. --- .../securesms/registration/ui/RegistrationState.kt | 1 + .../securesms/registration/ui/RegistrationViewModel.kt | 8 ++++++++ .../ui/phonenumber/EnterPhoneNumberFragment.kt | 6 ++++++ .../securesms/registrationv3/ui/RegistrationState.kt | 1 + .../securesms/registrationv3/ui/RegistrationViewModel.kt | 8 ++++++++ .../ui/phonenumber/EnterPhoneNumberFragment.kt | 6 ++++++ 6 files changed, 30 insertions(+) diff --git a/app/src/main/java/org/thoughtcrime/securesms/registration/ui/RegistrationState.kt b/app/src/main/java/org/thoughtcrime/securesms/registration/ui/RegistrationState.kt index 45af3ceb2f..c8226a2a64 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/registration/ui/RegistrationState.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/registration/ui/RegistrationState.kt @@ -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, diff --git a/app/src/main/java/org/thoughtcrime/securesms/registration/ui/RegistrationViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/registration/ui/RegistrationViewModel.kt index ba657a4428..05c07b1634 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/registration/ui/RegistrationViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/registration/ui/RegistrationViewModel.kt @@ -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)) { diff --git a/app/src/main/java/org/thoughtcrime/securesms/registration/ui/phonenumber/EnterPhoneNumberFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/registration/ui/phonenumber/EnterPhoneNumberFragment.kt index 967d1097a7..e0899135fb 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/registration/ui/phonenumber/EnterPhoneNumberFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/registration/ui/phonenumber/EnterPhoneNumberFragment.kt @@ -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() ?: "" } ) diff --git a/app/src/main/java/org/thoughtcrime/securesms/registrationv3/ui/RegistrationState.kt b/app/src/main/java/org/thoughtcrime/securesms/registrationv3/ui/RegistrationState.kt index 7853313fef..162e5cbd08 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/registrationv3/ui/RegistrationState.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/registrationv3/ui/RegistrationState.kt @@ -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, diff --git a/app/src/main/java/org/thoughtcrime/securesms/registrationv3/ui/RegistrationViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/registrationv3/ui/RegistrationViewModel.kt index 1abb229479..ab9ea41c40 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/registrationv3/ui/RegistrationViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/registrationv3/ui/RegistrationViewModel.kt @@ -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)) { diff --git a/app/src/main/java/org/thoughtcrime/securesms/registrationv3/ui/phonenumber/EnterPhoneNumberFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/registrationv3/ui/phonenumber/EnterPhoneNumberFragment.kt index 65e8f79511..cd7d40ee22 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/registrationv3/ui/phonenumber/EnterPhoneNumberFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/registrationv3/ui/phonenumber/EnterPhoneNumberFragment.kt @@ -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() ?: "" } )