mirror of
https://github.com/signalapp/Signal-Android.git
synced 2025-12-24 04:58:45 +00:00
Prepare for registration v3.
This commit is contained in:
committed by
Greyson Parrelli
parent
861ef4d708
commit
72ea4744f6
@@ -101,14 +101,14 @@ class ChangeNumberEnterCodeFragment : LoggingFragment(R.layout.fragment_change_n
|
||||
binding.codeEntryLayout.callMeCountDown.apply {
|
||||
setTextResources(R.string.RegistrationActivity_call, R.string.RegistrationActivity_call_me_instead_available_in)
|
||||
setOnClickListener {
|
||||
viewModel.initiateChangeNumberSession(requireContext(), RegistrationRepository.Mode.PHONE_CALL)
|
||||
viewModel.initiateChangeNumberSession(requireContext(), RegistrationRepository.E164VerificationMode.PHONE_CALL)
|
||||
}
|
||||
}
|
||||
|
||||
binding.codeEntryLayout.resendSmsCountDown.apply {
|
||||
setTextResources(R.string.RegistrationActivity_resend_code, R.string.RegistrationActivity_resend_sms_available_in)
|
||||
setOnClickListener {
|
||||
viewModel.initiateChangeNumberSession(requireContext(), RegistrationRepository.Mode.SMS_WITHOUT_LISTENER)
|
||||
viewModel.initiateChangeNumberSession(requireContext(), RegistrationRepository.E164VerificationMode.SMS_WITHOUT_LISTENER)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -69,7 +69,7 @@ class ChangeNumberVerifyFragment : LoggingFragment(R.layout.fragment_change_phon
|
||||
}
|
||||
|
||||
private fun requestCode() {
|
||||
val mode = if (ChangeNumberVerifyFragmentArgs.fromBundle(requireArguments()).smsListenerEnabled) RegistrationRepository.Mode.SMS_WITH_LISTENER else RegistrationRepository.Mode.SMS_WITHOUT_LISTENER
|
||||
val mode = if (ChangeNumberVerifyFragmentArgs.fromBundle(requireArguments()).smsListenerEnabled) RegistrationRepository.E164VerificationMode.SMS_WITH_LISTENER else RegistrationRepository.E164VerificationMode.SMS_WITHOUT_LISTENER
|
||||
viewModel.initiateChangeNumberSession(requireContext(), mode)
|
||||
}
|
||||
|
||||
|
||||
@@ -336,7 +336,7 @@ class ChangeNumberViewModel : ViewModel() {
|
||||
}
|
||||
}
|
||||
|
||||
fun initiateChangeNumberSession(context: Context, mode: RegistrationRepository.Mode) {
|
||||
fun initiateChangeNumberSession(context: Context, mode: RegistrationRepository.E164VerificationMode) {
|
||||
Log.v(TAG, "changeNumber()")
|
||||
store.update { it.copy(inProgress = true) }
|
||||
viewModelScope.launch {
|
||||
@@ -465,7 +465,7 @@ class ChangeNumberViewModel : ViewModel() {
|
||||
numberChangeErrorHandler(result)
|
||||
}
|
||||
|
||||
private suspend fun requestVerificationCode(context: Context, mode: RegistrationRepository.Mode) {
|
||||
private suspend fun requestVerificationCode(context: Context, mode: RegistrationRepository.E164VerificationMode) {
|
||||
Log.v(TAG, "requestVerificationCode()")
|
||||
val e164 = number.e164Number
|
||||
|
||||
|
||||
@@ -351,7 +351,7 @@ object RegistrationRepository {
|
||||
/**
|
||||
* Asks the service to send a verification code through one of our supported channels (SMS, phone call).
|
||||
*/
|
||||
suspend fun requestSmsCode(context: Context, sessionId: String, e164: String, password: String, mode: Mode): VerificationCodeRequestResult =
|
||||
suspend fun requestSmsCode(context: Context, sessionId: String, e164: String, password: String, mode: E164VerificationMode): VerificationCodeRequestResult =
|
||||
withContext(Dispatchers.IO) {
|
||||
val api: RegistrationApi = AccountManagerFactory.getInstance().createUnauthenticated(context, e164, SignalServiceAddress.DEFAULT_DEVICE_ID, password).registrationApi
|
||||
|
||||
@@ -605,7 +605,7 @@ object RegistrationRepository {
|
||||
fun produceMasterKey(): MasterKey
|
||||
}
|
||||
|
||||
enum class Mode(val isSmsRetrieverSupported: Boolean, val transport: PushServiceSocket.VerificationCodeTransport) {
|
||||
enum class E164VerificationMode(val isSmsRetrieverSupported: Boolean, val transport: PushServiceSocket.VerificationCodeTransport) {
|
||||
SMS_WITH_LISTENER(true, PushServiceSocket.VerificationCodeTransport.SMS),
|
||||
SMS_WITHOUT_LISTENER(false, PushServiceSocket.VerificationCodeTransport.SMS),
|
||||
PHONE_CALL(false, PushServiceSocket.VerificationCodeTransport.VOICE)
|
||||
|
||||
@@ -321,7 +321,7 @@ class RegistrationViewModel : ViewModel() {
|
||||
sessionId = validSession.body.id,
|
||||
e164 = e164,
|
||||
password = password,
|
||||
mode = RegistrationRepository.Mode.PHONE_CALL
|
||||
mode = RegistrationRepository.E164VerificationMode.PHONE_CALL
|
||||
)
|
||||
Log.d(TAG, "Voice code request network call completed.")
|
||||
|
||||
@@ -348,7 +348,7 @@ class RegistrationViewModel : ViewModel() {
|
||||
}
|
||||
|
||||
Log.d(TAG, "Requesting SMS code…")
|
||||
val transportMode = if (smsListenerReady) RegistrationRepository.Mode.SMS_WITH_LISTENER else RegistrationRepository.Mode.SMS_WITHOUT_LISTENER
|
||||
val transportMode = if (smsListenerReady) RegistrationRepository.E164VerificationMode.SMS_WITH_LISTENER else RegistrationRepository.E164VerificationMode.SMS_WITHOUT_LISTENER
|
||||
val codeRequestResponse = RegistrationRepository.requestSmsCode(
|
||||
context = context,
|
||||
sessionId = sessionId,
|
||||
@@ -820,9 +820,6 @@ class RegistrationViewModel : ViewModel() {
|
||||
private suspend fun onSuccessfulRegistration(context: Context, registrationData: RegistrationData, remoteResult: RegistrationRepository.AccountRegistrationResult, reglockEnabled: Boolean) {
|
||||
Log.v(TAG, "onSuccessfulRegistration()")
|
||||
val metadata = LocalRegistrationMetadataUtil.createLocalRegistrationMetadata(SignalStore.account.aciIdentityKey, SignalStore.account.pniIdentityKey, registrationData, remoteResult, reglockEnabled)
|
||||
if (RemoteConfig.restoreAfterRegistration) {
|
||||
SignalStore.registration.localRegistrationMetadata = metadata
|
||||
}
|
||||
RegistrationRepository.registerAccountLocally(context, metadata)
|
||||
|
||||
if (reglockEnabled) {
|
||||
|
||||
@@ -422,7 +422,7 @@ class EnterPhoneNumberFragment : LoggingFragment(R.layout.fragment_registration_
|
||||
}
|
||||
}
|
||||
|
||||
private fun handleNonNormalizedNumberError(originalNumber: String, normalizedNumber: String, mode: RegistrationRepository.Mode) {
|
||||
private fun handleNonNormalizedNumberError(originalNumber: String, normalizedNumber: String, mode: RegistrationRepository.E164VerificationMode) {
|
||||
try {
|
||||
val phoneNumber = PhoneNumberUtil.getInstance().parse(normalizedNumber, null)
|
||||
|
||||
@@ -441,9 +441,9 @@ class EnterPhoneNumberFragment : LoggingFragment(R.layout.fragment_registration_
|
||||
spinnerView.setText(phoneNumber.countryCode.toString())
|
||||
phoneNumberInputLayout.setText(phoneNumber.nationalNumber.toString())
|
||||
when (mode) {
|
||||
RegistrationRepository.Mode.SMS_WITH_LISTENER,
|
||||
RegistrationRepository.Mode.SMS_WITHOUT_LISTENER -> sharedViewModel.requestSmsCode(requireContext())
|
||||
RegistrationRepository.Mode.PHONE_CALL -> sharedViewModel.requestVerificationCall(requireContext())
|
||||
RegistrationRepository.E164VerificationMode.SMS_WITH_LISTENER,
|
||||
RegistrationRepository.E164VerificationMode.SMS_WITHOUT_LISTENER -> sharedViewModel.requestSmsCode(requireContext())
|
||||
RegistrationRepository.E164VerificationMode.PHONE_CALL -> sharedViewModel.requestVerificationCall(requireContext())
|
||||
}
|
||||
dialogInterface.dismiss()
|
||||
}
|
||||
|
||||
@@ -11,7 +11,13 @@ import org.thoughtcrime.securesms.registration.data.RegistrationRepository
|
||||
/**
|
||||
* State holder for the phone number entry screen, including phone number and Play Services errors.
|
||||
*/
|
||||
data class EnterPhoneNumberState(val countryPrefixIndex: Int = 0, val phoneNumber: String = "", val phoneNumberFormatter: TextWatcher? = null, val mode: RegistrationRepository.Mode = RegistrationRepository.Mode.SMS_WITHOUT_LISTENER, val error: Error = Error.NONE) {
|
||||
data class EnterPhoneNumberState(
|
||||
val countryPrefixIndex: Int = 0,
|
||||
val phoneNumber: String = "",
|
||||
val phoneNumberFormatter: TextWatcher? = null,
|
||||
val mode: RegistrationRepository.E164VerificationMode = RegistrationRepository.E164VerificationMode.SMS_WITHOUT_LISTENER,
|
||||
val error: Error = Error.NONE
|
||||
) {
|
||||
enum class Error {
|
||||
NONE, INVALID_PHONE_NUMBER, PLAY_SERVICES_MISSING, PLAY_SERVICES_NEEDS_UPDATE, PLAY_SERVICES_TRANSIENT
|
||||
}
|
||||
|
||||
@@ -47,7 +47,7 @@ class EnterPhoneNumberViewModel : ViewModel() {
|
||||
.map { CountryPrefix(it, PhoneNumberUtil.getInstance().getRegionCodeForCountryCode(it)) }
|
||||
.sortedBy { it.digits }
|
||||
|
||||
var mode: RegistrationRepository.Mode
|
||||
var mode: RegistrationRepository.E164VerificationMode
|
||||
get() = store.value.mode
|
||||
set(value) = store.update {
|
||||
it.copy(mode = value)
|
||||
|
||||
@@ -28,10 +28,8 @@ import org.thoughtcrime.securesms.registration.ui.grantpermissions.GrantPermissi
|
||||
import org.thoughtcrime.securesms.restore.RestoreActivity
|
||||
import org.thoughtcrime.securesms.util.BackupUtil
|
||||
import org.thoughtcrime.securesms.util.CommunicationActions
|
||||
import org.thoughtcrime.securesms.util.RemoteConfig
|
||||
import org.thoughtcrime.securesms.util.TextSecurePreferences
|
||||
import org.thoughtcrime.securesms.util.navigation.safeNavigate
|
||||
import org.thoughtcrime.securesms.util.visible
|
||||
|
||||
/**
|
||||
* First screen that is displayed on the very first app launch.
|
||||
@@ -60,7 +58,6 @@ class WelcomeFragment : LoggingFragment(R.layout.fragment_registration_welcome)
|
||||
binding.welcomeContinueButton.setOnClickListener { onContinueClicked() }
|
||||
binding.welcomeTermsButton.setOnClickListener { onTermsClicked() }
|
||||
binding.welcomeTransferOrRestore.setOnClickListener { onTransferOrRestoreClicked() }
|
||||
binding.welcomeTransferOrRestore.visible = !RemoteConfig.restoreAfterRegistration
|
||||
}
|
||||
|
||||
private fun onContinueClicked() {
|
||||
|
||||
Reference in New Issue
Block a user