diff --git a/app/src/main/java/org/thoughtcrime/securesms/registration/RegistrationRepository.java b/app/src/main/java/org/thoughtcrime/securesms/registration/RegistrationRepository.java index 7b7891fa0..417448222 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/registration/RegistrationRepository.java +++ b/app/src/main/java/org/thoughtcrime/securesms/registration/RegistrationRepository.java @@ -97,7 +97,12 @@ public final class RegistrationRepository { { return Single.>fromCallable(() -> { try { - registerAccountInternal(registrationData, response.getVerifyAccountResponse(), response.getPin(), response.getKbsData()); + String pin = response.getPin(); + registerAccountInternal(registrationData, response.getVerifyAccountResponse(), pin, response.getKbsData()); + + if (pin != null && !pin.isEmpty()) { + PinState.onPinChangedOrCreated(context, pin, SignalStore.pinValues().getKeyboardType()); + } JobManager jobManager = ApplicationDependencies.getJobManager(); jobManager.add(new DirectoryRefreshJob(false)); diff --git a/app/src/main/java/org/thoughtcrime/securesms/registration/VerifyAccountRepository.kt b/app/src/main/java/org/thoughtcrime/securesms/registration/VerifyAccountRepository.kt index f92638ea8..909f65940 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/registration/VerifyAccountRepository.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/registration/VerifyAccountRepository.kt @@ -75,10 +75,6 @@ class VerifyAccountRepository(private val context: Application) { }.subscribeOn(Schedulers.io()) } - fun verifyAccountWithReregistrationData(registrationData: RegistrationData, kbsPinDataProducer: KbsPinDataProducer): Single> { - return verifyAccountWithPin(registrationData, "", kbsPinDataProducer) - } - fun verifyAccountWithPin(registrationData: RegistrationData, pin: String, kbsPinDataProducer: KbsPinDataProducer): Single> { val universalUnidentifiedAccess: Boolean = TextSecurePreferences.isUniversalUnidentifiedAccess(context) val unidentifiedAccessKey: ByteArray = UnidentifiedAccess.deriveAccessKeyFrom(registrationData.profileKey) diff --git a/app/src/main/java/org/thoughtcrime/securesms/registration/viewmodel/BaseRegistrationViewModel.java b/app/src/main/java/org/thoughtcrime/securesms/registration/viewmodel/BaseRegistrationViewModel.java index 055c80fa8..89e4db1aa 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/registration/viewmodel/BaseRegistrationViewModel.java +++ b/app/src/main/java/org/thoughtcrime/securesms/registration/viewmodel/BaseRegistrationViewModel.java @@ -6,6 +6,7 @@ import androidx.lifecycle.LiveData; import androidx.lifecycle.SavedStateHandle; import androidx.lifecycle.ViewModel; +import org.thoughtcrime.securesms.keyvalue.SignalStore; import org.thoughtcrime.securesms.pin.KbsRepository; import org.thoughtcrime.securesms.pin.TokenData; import org.thoughtcrime.securesms.registration.RequestVerificationCodeResponseProcessor; diff --git a/app/src/main/java/org/thoughtcrime/securesms/registration/viewmodel/RegistrationViewModel.java b/app/src/main/java/org/thoughtcrime/securesms/registration/viewmodel/RegistrationViewModel.java index 0d4396c27..2e254d183 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/registration/viewmodel/RegistrationViewModel.java +++ b/app/src/main/java/org/thoughtcrime/securesms/registration/viewmodel/RegistrationViewModel.java @@ -111,11 +111,12 @@ public final class RegistrationViewModel extends BaseRegistrationViewModel { return verifyAccountRepository.verifyAccount(getRegistrationData()) .flatMap(verifyAccountWithoutKbsResponse -> { VerifyResponseProcessor processor = new VerifyResponseWithoutKbs(verifyAccountWithoutKbsResponse); + String pin = SignalStore.kbsValues().getPin(); - if (processor.registrationLock() && SignalStore.kbsValues().getRegistrationLockToken() != null) { + if (processor.registrationLock() && SignalStore.kbsValues().getRegistrationLockToken() != null && pin != null) { KbsPinData pinData = new KbsPinData(SignalStore.kbsValues().getOrCreateMasterKey(), SignalStore.kbsValues().getRegistrationLockTokenResponse()); - return verifyAccountRepository.verifyAccountWithReregistrationData(getRegistrationData(), () -> pinData) + return verifyAccountRepository.verifyAccountWithPin(getRegistrationData(), pin, () -> pinData) .map(verifyAccountWithPinResponse -> { if (verifyAccountWithPinResponse.getResult().isPresent() && verifyAccountWithPinResponse.getResult().get().getKbsData() != null) { return verifyAccountWithPinResponse;