mirror of
https://github.com/signalapp/Signal-Android.git
synced 2025-12-25 05:27:42 +00:00
Use unauth WebSocket after quick restore for transfer mode decision.
This commit is contained in:
committed by
Michelle Tang
parent
143b2b5bd5
commit
ac36eeb84d
@@ -431,7 +431,7 @@ object AppDependencies {
|
||||
fun provideCdsApi(authWebSocket: SignalWebSocket.AuthenticatedWebSocket): CdsApi
|
||||
fun provideRateLimitChallengeApi(authWebSocket: SignalWebSocket.AuthenticatedWebSocket): RateLimitChallengeApi
|
||||
fun provideMessageApi(authWebSocket: SignalWebSocket.AuthenticatedWebSocket, unauthWebSocket: SignalWebSocket.UnauthenticatedWebSocket): MessageApi
|
||||
fun provideProvisioningApi(authWebSocket: SignalWebSocket.AuthenticatedWebSocket): ProvisioningApi
|
||||
fun provideProvisioningApi(authWebSocket: SignalWebSocket.AuthenticatedWebSocket, unauthWebSocket: SignalWebSocket.UnauthenticatedWebSocket): ProvisioningApi
|
||||
fun provideCertificateApi(authWebSocket: SignalWebSocket.AuthenticatedWebSocket): CertificateApi
|
||||
fun provideProfileApi(authWebSocket: SignalWebSocket.AuthenticatedWebSocket, pushServiceSocket: PushServiceSocket): ProfileApi
|
||||
fun provideRemoteConfigApi(authWebSocket: SignalWebSocket.AuthenticatedWebSocket): RemoteConfigApi
|
||||
|
||||
@@ -8,6 +8,7 @@ import android.os.HandlerThread;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.VisibleForTesting;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.signal.billing.BillingFactory;
|
||||
import org.signal.core.util.ThreadUtil;
|
||||
import org.signal.core.util.billing.BillingApi;
|
||||
@@ -547,8 +548,8 @@ public class ApplicationDependencyProvider implements AppDependencies.Provider {
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NonNull ProvisioningApi provideProvisioningApi(@NonNull SignalWebSocket.AuthenticatedWebSocket authWebSocket) {
|
||||
return new ProvisioningApi(authWebSocket);
|
||||
public @NonNull ProvisioningApi provideProvisioningApi(@NonNull SignalWebSocket.AuthenticatedWebSocket authWebSocket, SignalWebSocket.@NotNull UnauthenticatedWebSocket unauthWebSocket) {
|
||||
return new ProvisioningApi(authWebSocket, unauthWebSocket);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -199,7 +199,7 @@ class NetworkDependenciesModule(
|
||||
}
|
||||
|
||||
val provisioningApi: ProvisioningApi by lazy {
|
||||
provider.provideProvisioningApi(authWebSocket)
|
||||
provider.provideProvisioningApi(authWebSocket, unauthWebSocket)
|
||||
}
|
||||
|
||||
val certificateApi: CertificateApi by lazy {
|
||||
|
||||
@@ -30,13 +30,15 @@ class TransferAccountViewModel(reRegisterUri: String) : ViewModel() {
|
||||
val result = QuickRegistrationRepository.transferAccount(store.value.reRegisterUri, restoreMethodToken)
|
||||
store.update { it.copy(reRegisterResult = result, inProgress = false) }
|
||||
|
||||
val restoreMethod = QuickRegistrationRepository.waitForRestoreMethodSelectionOnNewDevice(restoreMethodToken)
|
||||
if (result == QuickRegistrationRepository.TransferAccountResult.SUCCESS) {
|
||||
val restoreMethod = QuickRegistrationRepository.waitForRestoreMethodSelectionOnNewDevice(restoreMethodToken)
|
||||
|
||||
if (restoreMethod != RestoreMethod.DECLINE) {
|
||||
SignalStore.registration.restoringOnNewDevice = true
|
||||
if (restoreMethod != RestoreMethod.DECLINE) {
|
||||
SignalStore.registration.restoringOnNewDevice = true
|
||||
}
|
||||
|
||||
store.update { it.copy(restoreMethodSelected = restoreMethod) }
|
||||
}
|
||||
|
||||
store.update { it.copy(restoreMethodSelected = restoreMethod) }
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -281,7 +281,7 @@ class MockApplicationDependencyProvider : AppDependencies.Provider {
|
||||
return mockk(relaxed = true)
|
||||
}
|
||||
|
||||
override fun provideProvisioningApi(authWebSocket: SignalWebSocket.AuthenticatedWebSocket): ProvisioningApi {
|
||||
override fun provideProvisioningApi(authWebSocket: SignalWebSocket.AuthenticatedWebSocket, unauthWebSocket: SignalWebSocket.UnauthenticatedWebSocket): ProvisioningApi {
|
||||
return mockk(relaxed = true)
|
||||
}
|
||||
|
||||
|
||||
@@ -21,7 +21,7 @@ import kotlin.time.Duration.Companion.seconds
|
||||
/**
|
||||
* Linked and new device provisioning endpoints.
|
||||
*/
|
||||
class ProvisioningApi(private val authWebSocket: SignalWebSocket.AuthenticatedWebSocket) {
|
||||
class ProvisioningApi(private val authWebSocket: SignalWebSocket.AuthenticatedWebSocket, private val unauthWebSocket: SignalWebSocket.UnauthenticatedWebSocket) {
|
||||
|
||||
/**
|
||||
* Encrypts and sends the [registrationProvisionMessage] from the current primary (old device) to the new device over
|
||||
@@ -56,7 +56,7 @@ class ProvisioningApi(private val authWebSocket: SignalWebSocket.AuthenticatedWe
|
||||
val request = WebSocketRequestMessage.get("/v1/devices/restore_account/${token.urlEncode()}?timeout=$timeout")
|
||||
|
||||
return NetworkResult.fromWebSocket(NetworkResult.LongPollingWebSocketConverter(RestoreMethodBody::class)) {
|
||||
authWebSocket.request(request, timeout.seconds)
|
||||
unauthWebSocket.request(request, timeout.seconds)
|
||||
}.map {
|
||||
it.method ?: RestoreMethod.DECLINE
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user