From 40f9a25b87981eb4db59627d914289c3f1ce7fa4 Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Tue, 10 Jan 2023 17:24:35 -0500 Subject: [PATCH] Set Accept-Language header when requesting SMS code. --- .../securesms/registration/VerifyAccountRepository.kt | 2 +- .../signalservice/api/SignalServiceAccountManager.java | 4 ++-- .../signalservice/internal/push/PushServiceSocket.java | 7 ++++--- 3 files changed, 7 insertions(+), 6 deletions(-) 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 909f65940f..b1fbfee2d3 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/registration/VerifyAccountRepository.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/registration/VerifyAccountRepository.kt @@ -44,7 +44,7 @@ class VerifyAccountRepository(private val context: Application) { if (mode == Mode.PHONE_CALL) { accountManager.requestVoiceVerificationCode(Locale.getDefault(), Optional.ofNullable(captchaToken), pushChallenge, fcmToken) } else { - accountManager.requestSmsVerificationCode(mode.isSmsRetrieverSupported, Optional.ofNullable(captchaToken), pushChallenge, fcmToken) + accountManager.requestSmsVerificationCode(Locale.getDefault(), mode.isSmsRetrieverSupported, Optional.ofNullable(captchaToken), pushChallenge, fcmToken) } }.subscribeOn(Schedulers.io()) } diff --git a/libsignal/service/src/main/java/org/whispersystems/signalservice/api/SignalServiceAccountManager.java b/libsignal/service/src/main/java/org/whispersystems/signalservice/api/SignalServiceAccountManager.java index 474cf68c9f..d600e8e1a6 100644 --- a/libsignal/service/src/main/java/org/whispersystems/signalservice/api/SignalServiceAccountManager.java +++ b/libsignal/service/src/main/java/org/whispersystems/signalservice/api/SignalServiceAccountManager.java @@ -239,9 +239,9 @@ public class SignalServiceAccountManager { * @param captchaToken If the user has done a CAPTCHA, include this. * @param challenge If present, it can bypass the CAPTCHA. */ - public ServiceResponse requestSmsVerificationCode(boolean androidSmsRetrieverSupported, Optional captchaToken, Optional challenge, Optional fcmToken) { + public ServiceResponse requestSmsVerificationCode(Locale locale, boolean androidSmsRetrieverSupported, Optional captchaToken, Optional challenge, Optional fcmToken) { try { - this.pushServiceSocket.requestSmsVerificationCode(androidSmsRetrieverSupported, captchaToken, challenge); + this.pushServiceSocket.requestSmsVerificationCode(locale, androidSmsRetrieverSupported, captchaToken, challenge); return ServiceResponse.forResult(new RequestVerificationCodeResponse(fcmToken), 200, null); } catch (IOException e) { return ServiceResponse.forUnknownError(e); diff --git a/libsignal/service/src/main/java/org/whispersystems/signalservice/internal/push/PushServiceSocket.java b/libsignal/service/src/main/java/org/whispersystems/signalservice/internal/push/PushServiceSocket.java index be3d59caf6..82bb5e7684 100644 --- a/libsignal/service/src/main/java/org/whispersystems/signalservice/internal/push/PushServiceSocket.java +++ b/libsignal/service/src/main/java/org/whispersystems/signalservice/internal/push/PushServiceSocket.java @@ -320,8 +320,9 @@ public class PushServiceSocket { this.clientZkProfileOperations = clientZkProfileOperations; } - public void requestSmsVerificationCode(boolean androidSmsRetriever, Optional captchaToken, Optional challenge) throws IOException { - String path = String.format(CREATE_ACCOUNT_SMS_PATH, credentialsProvider.getE164(), androidSmsRetriever ? "android-2021-03" : "android"); + public void requestSmsVerificationCode(Locale locale, boolean androidSmsRetriever, Optional captchaToken, Optional challenge) throws IOException { + Map headers = locale != null ? Collections.singletonMap("Accept-Language", locale.getLanguage() + "-" + locale.getCountry()) : NO_HEADERS; + String path = String.format(CREATE_ACCOUNT_SMS_PATH, credentialsProvider.getE164(), androidSmsRetriever ? "android-2021-03" : "android"); if (captchaToken.isPresent()) { path += "&captcha=" + captchaToken.get(); @@ -329,7 +330,7 @@ public class PushServiceSocket { path += "&challenge=" + challenge.get(); } - makeServiceRequest(path, "GET", null, NO_HEADERS, new VerificationCodeResponseHandler(), Optional.empty()); + makeServiceRequest(path, "GET", null, headers, new VerificationCodeResponseHandler(), Optional.empty()); } public void requestVoiceVerificationCode(Locale locale, Optional captchaToken, Optional challenge) throws IOException {