Prepare for registration v3.

This commit is contained in:
Cody Henthorne
2024-10-07 10:42:23 -04:00
committed by Greyson Parrelli
parent 861ef4d708
commit 72ea4744f6
9 changed files with 21 additions and 21 deletions

View File

@@ -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)
}
}

View File

@@ -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)
}

View File

@@ -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

View File

@@ -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)

View File

@@ -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) {

View File

@@ -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()
}

View File

@@ -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
}

View File

@@ -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)

View File

@@ -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() {