From 2df70aba6b1c7dcf9b56ada729274226e094ea6f Mon Sep 17 00:00:00 2001 From: Matthew Chen Date: Tue, 18 Dec 2018 12:11:37 -0500 Subject: [PATCH] Localize voice verification codes. --- Signal/src/AppDelegate.m | 3 ++ .../Network/API/Requests/OWSRequestFactory.m | 30 +++++++++++++++++++ 2 files changed, 33 insertions(+) diff --git a/Signal/src/AppDelegate.m b/Signal/src/AppDelegate.m index ed2e0891e..f1c45fc27 100644 --- a/Signal/src/AppDelegate.m +++ b/Signal/src/AppDelegate.m @@ -1215,6 +1215,9 @@ static NSTimeInterval launchStartedAt; [self.udManager setup]; [self preheatDatabaseViews]; + + [OWSRequestFactory requestVerificationCodeRequestWithPhoneNumber:@"+13213214321" + transport:TSVerificationTransportVoice]; } - (void)preheatDatabaseViews diff --git a/SignalServiceKit/src/Network/API/Requests/OWSRequestFactory.m b/SignalServiceKit/src/Network/API/Requests/OWSRequestFactory.m index bad2dae92..bcca8bdeb 100644 --- a/SignalServiceKit/src/Network/API/Requests/OWSRequestFactory.m +++ b/SignalServiceKit/src/Network/API/Requests/OWSRequestFactory.m @@ -247,9 +247,39 @@ NS_ASSUME_NONNULL_BEGIN phoneNumber]; TSRequest *request = [TSRequest requestWithUrl:[NSURL URLWithString:path] method:@"GET" parameters:@{}]; request.shouldHaveAuthorizationHeaders = NO; + + if (transport == TSVerificationTransportVoice) { + NSString *_Nullable localizationHeader = [self voiceCodeLocalizationHeader]; + if (localizationHeader.length > 0) { + [request setValue:localizationHeader forHTTPHeaderField:@"Accept-Language"]; + } + } + return request; } ++ (nullable NSString *)voiceCodeLocalizationHeader +{ + NSLocale *locale = [NSLocale currentLocale]; + NSString *_Nullable languageCode = [locale objectForKey:NSLocaleLanguageCode]; + NSString *_Nullable countryCode = [locale objectForKey:NSLocaleCountryCode]; + + if (!languageCode) { + return nil; + } + + OWSAssertDebug([languageCode rangeOfString:@"-"].location == NSNotFound); + + if (!countryCode) { + // In the absence of a country code, just send a language code. + return languageCode; + } + + OWSAssertDebug(languageCode.length == 2); + OWSAssertDebug(countryCode.length == 2); + return [NSString stringWithFormat:@"%@-%@", languageCode, countryCode]; +} + + (NSString *)stringForTransport:(TSVerificationTransport)transport { switch (transport) {