mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-07-12 16:57:18 +01:00
Check for valid phone number.
This commit is contained in:
committed by
jeffrey-signal
parent
dd52d78ee0
commit
1c77c9d3fb
+2
-3
@@ -59,7 +59,6 @@ import org.signal.core.ui.compose.DropdownMenus
|
||||
import org.signal.core.ui.compose.IconButtons.IconButton
|
||||
import org.signal.core.ui.compose.Previews
|
||||
import org.signal.core.ui.rememberWindowBreakpoint
|
||||
import org.signal.core.util.E164Util
|
||||
import org.signal.registration.R
|
||||
import org.signal.registration.screens.RegistrationScreen
|
||||
import org.signal.registration.screens.phonenumber.PhoneNumberEntryState.OneTimeEvent
|
||||
@@ -81,7 +80,7 @@ fun PhoneNumberScreen(
|
||||
if (state.showDialog) {
|
||||
Dialogs.SimpleAlertDialog(
|
||||
title = stringResource(R.string.RegistrationActivity_is_the_phone_number),
|
||||
body = "${E164Util.formatAsE164WithCountryCodeForDisplay(state.countryCode, state.nationalNumber)}\n\n${stringResource(R.string.RegistrationActivity_a_verification_code)}",
|
||||
body = "+${state.countryCode} ${state.formattedNumber}\n\n${stringResource(R.string.RegistrationActivity_a_verification_code)}",
|
||||
confirm = stringResource(id = android.R.string.ok),
|
||||
dismiss = stringResource(R.string.RegistrationActivity_edit_number),
|
||||
onConfirm = { onEvent(PhoneNumberEntryScreenEvents.PhoneNumberSubmitted) },
|
||||
@@ -397,7 +396,7 @@ private fun NextButton(
|
||||
} else {
|
||||
Buttons.LargeTonal(
|
||||
onClick = { onEvent(PhoneNumberEntryScreenEvents.PhoneNumberEntered) },
|
||||
enabled = state.countryCode.isNotEmpty() && state.nationalNumber.isNotEmpty(),
|
||||
enabled = state.isNumberPossible,
|
||||
modifier = Modifier.testTag(TestTags.PHONE_NUMBER_NEXT_BUTTON)
|
||||
) {
|
||||
Text(stringResource(R.string.RegistrationActivity_next))
|
||||
|
||||
+13
@@ -5,6 +5,8 @@
|
||||
|
||||
package org.signal.registration.screens.phonenumber
|
||||
|
||||
import com.google.i18n.phonenumbers.NumberParseException
|
||||
import com.google.i18n.phonenumbers.PhoneNumberUtil
|
||||
import org.signal.registration.NetworkController
|
||||
import org.signal.registration.NetworkController.SessionMetadata
|
||||
import org.signal.registration.PendingRestoreOption
|
||||
@@ -36,4 +38,15 @@ data class PhoneNumberEntryState(
|
||||
data object UnableToSendSms : OneTimeEvent
|
||||
data object CouldNotRequestCodeWithSelectedTransport : OneTimeEvent
|
||||
}
|
||||
|
||||
val isNumberPossible: Boolean
|
||||
get() {
|
||||
if (countryCode.isEmpty() || nationalNumber.isEmpty()) return false
|
||||
return try {
|
||||
val number = PhoneNumberUtil.getInstance().parse("+$countryCode$nationalNumber", null)
|
||||
PhoneNumberUtil.getInstance().isPossibleNumber(number)
|
||||
} catch (_: NumberParseException) {
|
||||
false
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user