From 3fb8b02b3b4fe4b93b1382466f9262b1c556314c Mon Sep 17 00:00:00 2001 From: Michael Kirk Date: Tue, 2 Apr 2019 18:19:28 -0600 Subject: [PATCH 01/13] update front --- .../src/Network/OWSCensorshipConfiguration.h | 9 ++--- .../src/Network/OWSCensorshipConfiguration.m | 36 ++++++++++--------- .../src/Network/OWSCountryMetadata.m | 10 +++--- SignalServiceKit/src/TSConstants.h | 4 +-- 4 files changed, 32 insertions(+), 27 deletions(-) diff --git a/SignalServiceKit/src/Network/OWSCensorshipConfiguration.h b/SignalServiceKit/src/Network/OWSCensorshipConfiguration.h index 208b33504..1f16ac63f 100644 --- a/SignalServiceKit/src/Network/OWSCensorshipConfiguration.h +++ b/SignalServiceKit/src/Network/OWSCensorshipConfiguration.h @@ -1,14 +1,15 @@ // -// Copyright (c) 2018 Open Whisper Systems. All rights reserved. +// Copyright (c) 2019 Open Whisper Systems. All rights reserved. // NS_ASSUME_NONNULL_BEGIN @class AFSecurityPolicy; -extern NSString *const OWSCensorshipConfiguration_SouqFrontingHost; -extern NSString *const OWSCensorshipConfiguration_YahooViewFrontingHost; -extern NSString *const OWSCensorshipConfiguration_DefaultFrontingHost; +extern NSString *const OWSFrontingHost_GoogleEgypt; +extern NSString *const OWSFrontingHost_GoogleUAE; +extern NSString *const OWSFrontingHost_GoogleOman; +extern NSString *const OWSFrontingHost_GoogleQatar; @interface OWSCensorshipConfiguration : NSObject diff --git a/SignalServiceKit/src/Network/OWSCensorshipConfiguration.m b/SignalServiceKit/src/Network/OWSCensorshipConfiguration.m index 3ddbea908..fd55f80a5 100644 --- a/SignalServiceKit/src/Network/OWSCensorshipConfiguration.m +++ b/SignalServiceKit/src/Network/OWSCensorshipConfiguration.m @@ -1,5 +1,5 @@ // -// Copyright (c) 2018 Open Whisper Systems. All rights reserved. +// Copyright (c) 2019 Open Whisper Systems. All rights reserved. // #import "OWSCensorshipConfiguration.h" @@ -11,9 +11,11 @@ NS_ASSUME_NONNULL_BEGIN -NSString *const OWSCensorshipConfiguration_SouqFrontingHost = @"cms.souqcdn.com"; -NSString *const OWSCensorshipConfiguration_YahooViewFrontingHost = @"view.yahoo.com"; -NSString *const OWSCensorshipConfiguration_DefaultFrontingHost = OWSCensorshipConfiguration_YahooViewFrontingHost; +NSString *const OWSFrontingHost_GoogleEgypt = @"www.google.com.eg"; +NSString *const OWSFrontingHost_GoogleUAE = @"www.google.ae"; +NSString *const OWSFrontingHost_GoogleOman = @"www.google.com.om"; +NSString *const OWSFrontingHost_GoogleQatar = @"www.google.com.qa"; +NSString *const OWSFrontingHost_Default = @"www.google.com"; @implementation OWSCensorshipConfiguration @@ -25,7 +27,6 @@ NSString *const OWSCensorshipConfiguration_DefaultFrontingHost = OWSCensorshipCo return nil; } - return [self censorshipConfigurationWithCountryCode:countryCode]; } @@ -45,10 +46,9 @@ NSString *const OWSCensorshipConfiguration_DefaultFrontingHost = OWSCensorshipCo baseURL = [NSURL URLWithString:frontingURLString]; securityPolicy = [self securityPolicyForDomain:(NSString *)specifiedDomain]; } else { - NSString *frontingURLString = - [NSString stringWithFormat:@"https://%@", OWSCensorshipConfiguration_DefaultFrontingHost]; + NSString *frontingURLString = [NSString stringWithFormat:@"https://%@", OWSFrontingHost_Default]; baseURL = [NSURL URLWithString:frontingURLString]; - securityPolicy = [self securityPolicyForDomain:OWSCensorshipConfiguration_DefaultFrontingHost]; + securityPolicy = [self securityPolicyForDomain:OWSFrontingHost_Default]; } OWSAssertDebug(baseURL); @@ -135,13 +135,17 @@ NSString *const OWSCensorshipConfiguration_DefaultFrontingHost = OWSCensorshipCo // If the security policy requires new certificates, include them in the SSK bundle + (AFSecurityPolicy *)securityPolicyForDomain:(NSString *)domain { - if ([domain isEqualToString:OWSCensorshipConfiguration_SouqFrontingHost]) { - return [self souqPinningPolicy]; - } else if ([domain isEqualToString:OWSCensorshipConfiguration_YahooViewFrontingHost]) { - return [self yahooViewPinningPolicy]; + if ([domain isEqualToString:OWSFrontingHost_GoogleEgypt]) { + return self.googlePinningPolicy; + } else if ([domain isEqualToString:OWSFrontingHost_GoogleQatar]) { + return self.googlePinningPolicy; + } else if ([domain isEqualToString:OWSFrontingHost_GoogleOman]) { + return self.googlePinningPolicy; + } else if ([domain isEqualToString:OWSFrontingHost_GoogleUAE]) { + return self.googlePinningPolicy; } else { OWSFailDebug(@"unknown pinning domain."); - return [self yahooViewPinningPolicy]; + return self.googlePinningPolicy; } } @@ -197,7 +201,7 @@ NSString *const OWSCensorshipConfiguration_DefaultFrontingHost = OWSCensorshipCo return certData; } -+ (AFSecurityPolicy *)yahooViewPinningPolicy ++ (AFSecurityPolicy *)yahooViewPinningPolicy_deprecated { static AFSecurityPolicy *securityPolicy = nil; static dispatch_once_t onceToken; @@ -209,7 +213,7 @@ NSString *const OWSCensorshipConfiguration_DefaultFrontingHost = OWSCensorshipCo return securityPolicy; } -+ (AFSecurityPolicy *)souqPinningPolicy ++ (AFSecurityPolicy *)souqPinningPolicy_deprecated { static AFSecurityPolicy *securityPolicy = nil; static dispatch_once_t onceToken; @@ -221,7 +225,7 @@ NSString *const OWSCensorshipConfiguration_DefaultFrontingHost = OWSCensorshipCo return securityPolicy; } -+ (AFSecurityPolicy *)googlePinningPolicy_deprecated ++ (AFSecurityPolicy *)googlePinningPolicy { static AFSecurityPolicy *securityPolicy = nil; static dispatch_once_t onceToken; diff --git a/SignalServiceKit/src/Network/OWSCountryMetadata.m b/SignalServiceKit/src/Network/OWSCountryMetadata.m index 95cf9a4bb..6d3811353 100644 --- a/SignalServiceKit/src/Network/OWSCountryMetadata.m +++ b/SignalServiceKit/src/Network/OWSCountryMetadata.m @@ -1,5 +1,5 @@ // -// Copyright (c) 2018 Open Whisper Systems. All rights reserved. +// Copyright (c) 2019 Open Whisper Systems. All rights reserved. // #import "OWSCountryMetadata.h" @@ -63,7 +63,7 @@ NS_ASSUME_NONNULL_BEGIN [OWSCountryMetadata countryMetadataWithName:@"Andorra" tld:@".ad" frontingDomain:nil countryCode:@"AD"], [OWSCountryMetadata countryMetadataWithName:@"United Arab Emirates" tld:@".ae" - frontingDomain:OWSCensorshipConfiguration_SouqFrontingHost + frontingDomain:OWSFrontingHost_GoogleUAE countryCode:@"AE"], [OWSCountryMetadata countryMetadataWithName:@"Afghanistan" tld:@".af" frontingDomain:nil countryCode:@"AF"], [OWSCountryMetadata countryMetadataWithName:@"Antigua and Barbuda" @@ -157,7 +157,7 @@ NS_ASSUME_NONNULL_BEGIN [OWSCountryMetadata countryMetadataWithName:@"Estonia" tld:@".ee" frontingDomain:nil countryCode:@"EE"], [OWSCountryMetadata countryMetadataWithName:@"Egypt" tld:@".eg" - frontingDomain:OWSCensorshipConfiguration_SouqFrontingHost + frontingDomain:OWSFrontingHost_GoogleEgypt countryCode:@"EG"], [OWSCountryMetadata countryMetadataWithName:@"Spain" tld:@".es" frontingDomain:nil countryCode:@"ES"], [OWSCountryMetadata countryMetadataWithName:@"Ethiopia" tld:@".et" frontingDomain:nil countryCode:@"ET"], @@ -255,7 +255,7 @@ NS_ASSUME_NONNULL_BEGIN [OWSCountryMetadata countryMetadataWithName:@"New Zealand" tld:@".nz" frontingDomain:nil countryCode:@"NZ"], [OWSCountryMetadata countryMetadataWithName:@"Oman" tld:@".om" - frontingDomain:OWSCensorshipConfiguration_SouqFrontingHost + frontingDomain:OWSFrontingHost_GoogleOman countryCode:@"OM"], [OWSCountryMetadata countryMetadataWithName:@"Pakistan" tld:@".pk" frontingDomain:nil countryCode:@"PK"], [OWSCountryMetadata countryMetadataWithName:@"Panama" tld:@".pa" frontingDomain:nil countryCode:@"PA"], @@ -279,7 +279,7 @@ NS_ASSUME_NONNULL_BEGIN [OWSCountryMetadata countryMetadataWithName:@"Paraguay" tld:@".py" frontingDomain:nil countryCode:@"PY"], [OWSCountryMetadata countryMetadataWithName:@"Qatar" tld:@".qa" - frontingDomain:OWSCensorshipConfiguration_SouqFrontingHost + frontingDomain:OWSFrontingHost_GoogleQatar countryCode:@"QA"], [OWSCountryMetadata countryMetadataWithName:@"Romania" tld:@".ro" frontingDomain:nil countryCode:@"RO"], [OWSCountryMetadata countryMetadataWithName:@"Serbia" tld:@".rs" frontingDomain:nil countryCode:@"RS"], diff --git a/SignalServiceKit/src/TSConstants.h b/SignalServiceKit/src/TSConstants.h index 8c327b503..e838abdce 100644 --- a/SignalServiceKit/src/TSConstants.h +++ b/SignalServiceKit/src/TSConstants.h @@ -29,8 +29,8 @@ typedef NS_ENUM(NSInteger, TSWhisperMessageType) { #define textSecureServerURL @"https://textsecure-service.whispersystems.org/" #define textSecureCDNServerURL @"https://cdn.signal.org" // Use same reflector for service and CDN -#define textSecureServiceReflectorHost @"textsecure-service-reflected.whispersystems.org" -#define textSecureCDNReflectorHost @"textsecure-service-reflected.whispersystems.org" +#define textSecureServiceReflectorHost @"europe-west1-signal-cdn-reflector.cloudfunctions.net" +#define textSecureCDNReflectorHost @"europe-west1-signal-cdn-reflector.cloudfunctions.net" #define contactDiscoveryURL @"https://api.directory.signal.org" #define kUDTrustRoot @"BXu6QIKVz5MA8gstzfOgRQGqyLqOwNKHL6INkv3IHWMF" #define USING_PRODUCTION_SERVICE From 1fae83a77716b75396edd5d7b9e3265dec198354 Mon Sep 17 00:00:00 2001 From: Michael Kirk Date: Tue, 2 Apr 2019 19:58:04 -0600 Subject: [PATCH 02/13] respect any CDN headers (eg Host for front) --- SignalMessaging/profiles/OWSProfileManager.m | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/SignalMessaging/profiles/OWSProfileManager.m b/SignalMessaging/profiles/OWSProfileManager.m index 7eb698855..e3a723a61 100644 --- a/SignalMessaging/profiles/OWSProfileManager.m +++ b/SignalMessaging/profiles/OWSProfileManager.m @@ -1233,10 +1233,19 @@ typedef void (^ProfileManagerFailureBlock)(NSError *error); }); }; - NSURL *avatarUrlPath = - [NSURL URLWithString:userProfile.avatarUrlPath relativeToURL:self.avatarHTTPManager.baseURL]; - NSURLRequest *request = [NSURLRequest requestWithURL:avatarUrlPath]; - NSURLSessionDownloadTask *downloadTask = [self.avatarHTTPManager downloadTaskWithRequest:request + NSURL *avatarUrl = [NSURL URLWithString:userProfile.avatarUrlPath relativeToURL:self.avatarHTTPManager.baseURL]; + NSError *serializationError; + NSMutableURLRequest *request = + [self.avatarHTTPManager.requestSerializer requestWithMethod:@"GET" + URLString:avatarUrl.absoluteString + parameters:nil + error:&serializationError]; + if (serializationError) { + OWSFailDebug(@"serializationError: %@", serializationError); + return; + } + + __block NSURLSessionDownloadTask *downloadTask = [self.avatarHTTPManager downloadTaskWithRequest:request progress:^(NSProgress *_Nonnull downloadProgress) { OWSLogVerbose( @"Downloading avatar for %@ %f", userProfile.recipientId, downloadProgress.fractionCompleted); From d06280a27072c1f6d39e5dbae96a84db96179982 Mon Sep 17 00:00:00 2001 From: Michael Kirk Date: Wed, 3 Apr 2019 06:28:38 -0600 Subject: [PATCH 03/13] "Bump build to 2.38.1.0." --- Signal/Signal-Info.plist | 4 ++-- SignalShareExtension/Info.plist | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Signal/Signal-Info.plist b/Signal/Signal-Info.plist index 0bb591dc5..8656b93c1 100644 --- a/Signal/Signal-Info.plist +++ b/Signal/Signal-Info.plist @@ -30,7 +30,7 @@ CFBundlePackageType APPL CFBundleShortVersionString - 2.38.0 + 2.38.1 CFBundleSignature ???? CFBundleURLTypes @@ -47,7 +47,7 @@ CFBundleVersion - 2.38.0.11 + 2.38.1.0 ITSAppUsesNonExemptEncryption LOGS_EMAIL diff --git a/SignalShareExtension/Info.plist b/SignalShareExtension/Info.plist index 57a84f865..26bc7dd41 100644 --- a/SignalShareExtension/Info.plist +++ b/SignalShareExtension/Info.plist @@ -17,9 +17,9 @@ CFBundlePackageType XPC! CFBundleShortVersionString - 2.38.0 + 2.38.1 CFBundleVersion - 2.38.0.11 + 2.38.1.0 ITSAppUsesNonExemptEncryption NSAppTransportSecurity From fdc9db34871e613dc86f69f07965f3bebabdd8a2 Mon Sep 17 00:00:00 2001 From: Michael Kirk Date: Tue, 2 Apr 2019 15:31:20 -0600 Subject: [PATCH 04/13] iOS9 workaround to restore input view after sending captioned attachment --- .../ConversationView/ConversationViewController.m | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Signal/src/ViewControllers/ConversationView/ConversationViewController.m b/Signal/src/ViewControllers/ConversationView/ConversationViewController.m index 6ff11de17..ec9e05bb6 100644 --- a/Signal/src/ViewControllers/ConversationView/ConversationViewController.m +++ b/Signal/src/ViewControllers/ConversationView/ConversationViewController.m @@ -2977,6 +2977,13 @@ typedef enum : NSUInteger { didPickImageAttachments:(NSArray *)attachments messageText:(NSString *_Nullable)messageText { + OWSAssert(self.isFirstResponder); + if (@available(iOS 10, *)) { + // do nothing + } else { + [self reloadInputViews]; + } + [self tryToSendAttachments:attachments messageText:messageText]; } From 8ead2cc83d567add02c060b79387caeb4b4383fd Mon Sep 17 00:00:00 2001 From: Michael Kirk Date: Wed, 3 Apr 2019 10:53:08 -0600 Subject: [PATCH 05/13] fix overzealous assert --- .../ConversationView/ConversationViewController.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Signal/src/ViewControllers/ConversationView/ConversationViewController.m b/Signal/src/ViewControllers/ConversationView/ConversationViewController.m index ec9e05bb6..bb49b1ba5 100644 --- a/Signal/src/ViewControllers/ConversationView/ConversationViewController.m +++ b/Signal/src/ViewControllers/ConversationView/ConversationViewController.m @@ -2977,7 +2977,7 @@ typedef enum : NSUInteger { didPickImageAttachments:(NSArray *)attachments messageText:(NSString *_Nullable)messageText { - OWSAssert(self.isFirstResponder); + OWSAssertDebug(self.isFirstResponder); if (@available(iOS 10, *)) { // do nothing } else { From 63907acb54aef902d52d7fcb7e69a8562f874b8e Mon Sep 17 00:00:00 2001 From: Michael Kirk Date: Tue, 2 Apr 2019 15:40:35 -0600 Subject: [PATCH 06/13] Don't update "cancel" status when locked --- .../ConversationInputToolbar.m | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/Signal/src/ViewControllers/ConversationView/ConversationInputToolbar.m b/Signal/src/ViewControllers/ConversationView/ConversationInputToolbar.m index fd34c1cd4..2f980384b 100644 --- a/Signal/src/ViewControllers/ConversationView/ConversationInputToolbar.m +++ b/Signal/src/ViewControllers/ConversationView/ConversationInputToolbar.m @@ -484,19 +484,6 @@ const CGFloat kMaxTextViewHeight = 98; // This is okay because there's only space on screen to perform the // gesture in one direction. CGFloat xOffset = fabs(self.voiceMemoGestureStartLocation.x - location.x); - // The lower this value, the easier it is to cancel by accident. - // The higher this value, the harder it is to cancel. - const CGFloat kCancelOffsetPoints = 100.f; - CGFloat cancelAlpha = xOffset / kCancelOffsetPoints; - BOOL isCancelled = cancelAlpha >= 1.f; - if (isCancelled) { - self.voiceMemoRecordingState = VoiceMemoRecordingState_Idle; - [self.inputToolbarDelegate voiceMemoGestureDidCancel]; - break; - } else { - [self.inputToolbarDelegate voiceMemoGestureDidUpdateCancelWithRatioComplete:cancelAlpha]; - } - CGFloat yOffset = fabs(self.voiceMemoGestureStartLocation.y - location.y); // require a certain threshold before we consider the user to be @@ -524,6 +511,19 @@ const CGFloat kMaxTextViewHeight = 98; } } else { [self.voiceMemoLockView updateWithRatioComplete:lockAlpha]; + + // The lower this value, the easier it is to cancel by accident. + // The higher this value, the harder it is to cancel. + const CGFloat kCancelOffsetPoints = 100.f; + CGFloat cancelAlpha = xOffset / kCancelOffsetPoints; + BOOL isCancelled = cancelAlpha >= 1.f; + if (isCancelled) { + self.voiceMemoRecordingState = VoiceMemoRecordingState_Idle; + [self.inputToolbarDelegate voiceMemoGestureDidCancel]; + break; + } else { + [self.inputToolbarDelegate voiceMemoGestureDidUpdateCancelWithRatioComplete:cancelAlpha]; + } } } break; From 5e96769a12a383b1e0fd490b49a7722dd8ac1aa6 Mon Sep 17 00:00:00 2001 From: Michael Kirk Date: Tue, 2 Apr 2019 15:16:38 -0600 Subject: [PATCH 07/13] resize voice note bar with rotation --- .../ConversationView/ConversationInputToolbar.m | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/Signal/src/ViewControllers/ConversationView/ConversationInputToolbar.m b/Signal/src/ViewControllers/ConversationView/ConversationInputToolbar.m index 2f980384b..689a0de88 100644 --- a/Signal/src/ViewControllers/ConversationView/ConversationInputToolbar.m +++ b/Signal/src/ViewControllers/ConversationView/ConversationInputToolbar.m @@ -569,7 +569,7 @@ const CGFloat kMaxTextViewHeight = 98; self.voiceMemoUI = [UIView new]; self.voiceMemoUI.backgroundColor = Theme.toolbarBackgroundColor; [self addSubview:self.voiceMemoUI]; - self.voiceMemoUI.frame = CGRectMake(0, 0, self.bounds.size.width, self.bounds.size.height); + [self.voiceMemoUI autoPinEdgesToSuperviewEdges]; SET_SUBVIEW_ACCESSIBILITY_IDENTIFIER(self, _voiceMemoUI); self.voiceMemoContentView = [UIView new]; @@ -671,8 +671,7 @@ const CGFloat kMaxTextViewHeight = 98; [self.recordingLabel autoPinLeadingToTrailingEdgeOfView:imageView offset:5.f]; [cancelLabel autoVCenterInSuperview]; [cancelLabel autoHCenterInSuperview]; - [self.voiceMemoUI setNeedsLayout]; - [self.voiceMemoUI layoutSubviews]; + [self.voiceMemoUI layoutIfNeeded]; // Slide in the "slide to cancel" label. CGRect cancelLabelStartFrame = cancelLabel.frame; From 9c9545b4088cec57a47bc7c79c342e0b29b17d4b Mon Sep 17 00:00:00 2001 From: Michael Kirk Date: Wed, 3 Apr 2019 11:02:19 -0600 Subject: [PATCH 08/13] update tags to ignore --- Scripts/reverse_integration_check.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/Scripts/reverse_integration_check.py b/Scripts/reverse_integration_check.py index 4fafa950f..b5b845aa8 100755 --- a/Scripts/reverse_integration_check.py +++ b/Scripts/reverse_integration_check.py @@ -60,9 +60,15 @@ def main(): '2.34.0.10', '2.34.0.11', '2.34.0.12', '2.34.0.13', '2.34.0.15', '2.34.0.16', '2.34.0.17', '2.34.0.18', '2.34.0.19', '2.34.0.20', '2.34.0.6', '2.34.0.7', '2.34.0.8', '2.34.0.9', '2.37.3.0', '2.37.4.0', + # these were internal release only tags, now we include "-internal" in the tag name to avoid this '2.38.0.2.1', '2.38.0.3.1', - '2.38.0.4.1' + '2.38.0.4.1', + # the work in these tags was moved to the 2.38.1 release instead + '2.38.0.12', + '2.38.0.13', + '2.38.0.14', + # ] tags_of_concern = [tag for tag in tags_of_concern if tag not in tags_to_ignore] From d189621495f75c959849c7dbeea1cfbe5c4b8a50 Mon Sep 17 00:00:00 2001 From: Matthew Chen Date: Tue, 2 Apr 2019 17:09:00 -0400 Subject: [PATCH 09/13] Don't bother cleaning up CKOperations per feature flag. --- Signal/src/util/Backup/OWSBackup.m | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Signal/src/util/Backup/OWSBackup.m b/Signal/src/util/Backup/OWSBackup.m index 6e0e7aeb3..5fabacf62 100644 --- a/Signal/src/util/Backup/OWSBackup.m +++ b/Signal/src/util/Backup/OWSBackup.m @@ -1,5 +1,5 @@ // -// Copyright (c) 2018 Open Whisper Systems. All rights reserved. +// Copyright (c) 2019 Open Whisper Systems. All rights reserved. // #import "OWSBackup.h" @@ -138,7 +138,9 @@ NSError *OWSBackupErrorWithDescription(NSString *description) - (void)setup { - [OWSBackupAPI setup]; + if (OWSBackup.isFeatureEnabled) { + [OWSBackupAPI setup]; + } [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(applicationDidBecomeActive:) From dc46974395b16d8c1488e617fe6c4d923d131161 Mon Sep 17 00:00:00 2001 From: Matthew Chen Date: Wed, 3 Apr 2019 13:11:08 -0400 Subject: [PATCH 10/13] Respond to CR. --- Signal/src/util/Backup/OWSBackup.m | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Signal/src/util/Backup/OWSBackup.m b/Signal/src/util/Backup/OWSBackup.m index 5fabacf62..c56069ded 100644 --- a/Signal/src/util/Backup/OWSBackup.m +++ b/Signal/src/util/Backup/OWSBackup.m @@ -138,10 +138,12 @@ NSError *OWSBackupErrorWithDescription(NSString *description) - (void)setup { - if (OWSBackup.isFeatureEnabled) { - [OWSBackupAPI setup]; + if (!OWSBackup.isFeatureEnabled) { + return; } + [OWSBackupAPI setup]; + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(applicationDidBecomeActive:) name:OWSApplicationDidBecomeActiveNotification From 7522fbd88ea4528b05eb3c937450be6e805e7c49 Mon Sep 17 00:00:00 2001 From: Michael Kirk Date: Wed, 3 Apr 2019 12:34:39 -0600 Subject: [PATCH 11/13] "Bump build to 2.38.1.1." --- Signal/Signal-Info.plist | 2 +- SignalShareExtension/Info.plist | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Signal/Signal-Info.plist b/Signal/Signal-Info.plist index 8656b93c1..5c659ae3b 100644 --- a/Signal/Signal-Info.plist +++ b/Signal/Signal-Info.plist @@ -47,7 +47,7 @@ CFBundleVersion - 2.38.1.0 + 2.38.1.1 ITSAppUsesNonExemptEncryption LOGS_EMAIL diff --git a/SignalShareExtension/Info.plist b/SignalShareExtension/Info.plist index 26bc7dd41..1f3d88acf 100644 --- a/SignalShareExtension/Info.plist +++ b/SignalShareExtension/Info.plist @@ -19,7 +19,7 @@ CFBundleShortVersionString 2.38.1 CFBundleVersion - 2.38.1.0 + 2.38.1.1 ITSAppUsesNonExemptEncryption NSAppTransportSecurity From a693e77c01b356aa0e89904b44ef28fe3e265e67 Mon Sep 17 00:00:00 2001 From: Michael Kirk Date: Wed, 3 Apr 2019 17:35:57 -0600 Subject: [PATCH 12/13] sync translations --- .../translations/bs.lproj/Localizable.strings | 8 ++++---- .../translations/fr.lproj/Localizable.strings | 2 +- .../translations/it.lproj/Localizable.strings | 2 +- .../translations/ja.lproj/Localizable.strings | 20 +++++++++---------- 4 files changed, 16 insertions(+), 16 deletions(-) diff --git a/Signal/translations/bs.lproj/Localizable.strings b/Signal/translations/bs.lproj/Localizable.strings index dc492024d..edbe43c95 100644 --- a/Signal/translations/bs.lproj/Localizable.strings +++ b/Signal/translations/bs.lproj/Localizable.strings @@ -252,7 +252,7 @@ "BLOCK_LIST_UNBLOCK_BUTTON" = "Deblokiraj"; /* Action sheet body when confirming you want to unblock a group */ -"BLOCK_LIST_UNBLOCK_GROUP_BODY" = "Existing members will be able to add you to the group again."; +"BLOCK_LIST_UNBLOCK_GROUP_BODY" = "Postojeći članovi moći će Vas ponovo uvrstiti u grupu."; /* Action sheet title when confirming you want to unblock a group. */ "BLOCK_LIST_UNBLOCK_GROUP_TITLE" = "Unblock This Group?"; @@ -435,7 +435,7 @@ "COMPOSE_MESSAGE_CONTACT_SECTION_TITLE" = "Kontakti"; /* Table section header for group listing when composing a new message */ -"COMPOSE_MESSAGE_GROUP_SECTION_TITLE" = "Groups"; +"COMPOSE_MESSAGE_GROUP_SECTION_TITLE" = "Grupe"; /* Table section header for invite listing when composing a new message */ "COMPOSE_MESSAGE_INVITE_SECTION_TITLE" = "Pozivnica"; @@ -516,10 +516,10 @@ "CONTACT_FIELD_MIDDLE_NAME" = "Middle Name"; /* Label for the 'name prefix' field of a contact. */ -"CONTACT_FIELD_NAME_PREFIX" = "Prefix"; +"CONTACT_FIELD_NAME_PREFIX" = "Prefiks"; /* Label for the 'name suffix' field of a contact. */ -"CONTACT_FIELD_NAME_SUFFIX" = "Suffix"; +"CONTACT_FIELD_NAME_SUFFIX" = "Sufiks"; /* Label for the 'organization' field of a contact. */ "CONTACT_FIELD_ORGANIZATION" = "Organization"; diff --git a/Signal/translations/fr.lproj/Localizable.strings b/Signal/translations/fr.lproj/Localizable.strings index 9e93e7e4d..b15c5d920 100644 --- a/Signal/translations/fr.lproj/Localizable.strings +++ b/Signal/translations/fr.lproj/Localizable.strings @@ -1515,7 +1515,7 @@ "ONBOARDING_PERMISSIONS_ENABLE_PERMISSIONS_BUTTON" = "Accorder les autorisations"; /* Explanation in the 'onboarding permissions' view. */ -"ONBOARDING_PERMISSIONS_EXPLANATION" = "Les informations de vos contacts sont toujours transmises de façon sécurisée."; +"ONBOARDING_PERMISSIONS_EXPLANATION" = "Les renseignements de vos contacts sont toujours transmises de façon sécurisée."; /* Label for the 'not now' button in the 'onboarding permissions' view. */ "ONBOARDING_PERMISSIONS_NOT_NOW_BUTTON" = "Pas maintenant"; diff --git a/Signal/translations/it.lproj/Localizable.strings b/Signal/translations/it.lproj/Localizable.strings index d5955b7ec..3a54d1f89 100644 --- a/Signal/translations/it.lproj/Localizable.strings +++ b/Signal/translations/it.lproj/Localizable.strings @@ -15,7 +15,7 @@ "ACTION_SEND_MESSAGE" = "Invia messaggio"; /* Label for 'share contact' button. */ -"ACTION_SHARE_CONTACT" = "Condivi contatto"; +"ACTION_SHARE_CONTACT" = "Condividi contatto"; /* Label for 'video call' button in contact view. */ "ACTION_VIDEO_CALL" = "Videochiamata"; diff --git a/Signal/translations/ja.lproj/Localizable.strings b/Signal/translations/ja.lproj/Localizable.strings index ccd645aab..434f0f0fe 100644 --- a/Signal/translations/ja.lproj/Localizable.strings +++ b/Signal/translations/ja.lproj/Localizable.strings @@ -96,7 +96,7 @@ "ATTACHMENT_APPROVAL_CAPTION_PLACEHOLDER" = "キャプションの追加..."; /* Title for 'caption' mode of the attachment approval view. */ -"ATTACHMENT_APPROVAL_CAPTION_TITLE" = "Caption"; +"ATTACHMENT_APPROVAL_CAPTION_TITLE" = "キャプション"; /* Format string for file extension label in call interstitial view */ "ATTACHMENT_APPROVAL_FILE_EXTENSION_FORMAT" = "ファイルの種類:%@"; @@ -351,7 +351,7 @@ "CALL_VIEW_DECLINE_INCOMING_CALL_LABEL" = "着信を拒否する"; /* tooltip label when remote party has enabled their video */ -"CALL_VIEW_ENABLE_VIDEO_HINT" = "Tap here to turn on your video"; +"CALL_VIEW_ENABLE_VIDEO_HINT" = "動画再生はここをタップ"; /* Accessibility label for hang up call */ "CALL_VIEW_HANGUP_LABEL" = "通話を切る"; @@ -564,13 +564,13 @@ "CONVERSATION_DELETE_CONFIRMATION_ALERT_TITLE" = "消去しますか?"; /* keyboard toolbar label when no messages match the search string */ -"CONVERSATION_SEARCH_NO_RESULTS" = "No matches"; +"CONVERSATION_SEARCH_NO_RESULTS" = "見つかりません"; /* keyboard toolbar label when exactly 1 message matches the search string */ -"CONVERSATION_SEARCH_ONE_RESULT" = "1 match"; +"CONVERSATION_SEARCH_ONE_RESULT" = "ありました"; /* keyboard toolbar label when more than 1 message matches the search string. Embeds {{number/position of the 'currently viewed' result}} and the {{total number of results}} */ -"CONVERSATION_SEARCH_RESULTS_FORMAT" = "%d of %d matches"; +"CONVERSATION_SEARCH_RESULTS_FORMAT" = "%d ( %d のうち)"; /* title for conversation settings screen */ "CONVERSATION_SETTINGS" = "会話設定"; @@ -624,7 +624,7 @@ "CONVERSATION_SETTINGS_NEW_CONTACT" = "新規の連絡先を作る"; /* Table cell label in conversation settings which returns the user to the conversation with 'search mode' activated */ -"CONVERSATION_SETTINGS_SEARCH" = "Search Conversation"; +"CONVERSATION_SETTINGS_SEARCH" = "会話の検索"; /* Label for button that opens conversation settings. */ "CONVERSATION_SETTINGS_TAP_TO_CHANGE" = "タップして変える"; @@ -1641,13 +1641,13 @@ "PHONE_NUMBER_TYPE_WORK_FAX" = "職場FAX"; /* alert title, generic error preventing user from capturing a photo */ -"PHOTO_CAPTURE_GENERIC_ERROR" = "Unable to capture image."; +"PHOTO_CAPTURE_GENERIC_ERROR" = "画像はキャプチャできません"; /* alert title */ -"PHOTO_CAPTURE_UNABLE_TO_CAPTURE_IMAGE" = "Unable to capture image."; +"PHOTO_CAPTURE_UNABLE_TO_CAPTURE_IMAGE" = "画像はキャプチャできません"; /* alert title */ -"PHOTO_CAPTURE_UNABLE_TO_INITIALIZE_CAMERA" = "Failed to configure camera."; +"PHOTO_CAPTURE_UNABLE_TO_INITIALIZE_CAMERA" = "カメラの設定ができませんでした"; /* label for system photo collections which have no name. */ "PHOTO_PICKER_UNNAMED_COLLECTION" = "無名のアルバム"; @@ -2484,7 +2484,7 @@ "UPGRADE_EXPERIENCE_VIDEO_TITLE" = "安全なビデオ電話にようこそ!"; /* Message for the alert indicating that user should upgrade iOS. */ -"UPGRADE_IOS_ALERT_MESSAGE" = "Signal will soon require iOS 10 or later. Please upgrade in Settings app >> General >> Software Update."; +"UPGRADE_IOS_ALERT_MESSAGE" = "Signalは、まもなくiOS 10以上だけの対応になります。アップデートしてください。"; /* Title for the alert indicating that user should upgrade iOS. */ "UPGRADE_IOS_ALERT_TITLE" = "iOSを更新する"; From a1c6b7ec154ca999ed9ef9d4a1d095597b610fb5 Mon Sep 17 00:00:00 2001 From: Michael Kirk Date: Wed, 3 Apr 2019 17:36:00 -0600 Subject: [PATCH 13/13] "Bump build to 2.38.1.2." --- Signal/Signal-Info.plist | 2 +- SignalShareExtension/Info.plist | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Signal/Signal-Info.plist b/Signal/Signal-Info.plist index 5c659ae3b..6f39a4de6 100644 --- a/Signal/Signal-Info.plist +++ b/Signal/Signal-Info.plist @@ -47,7 +47,7 @@ CFBundleVersion - 2.38.1.1 + 2.38.1.2 ITSAppUsesNonExemptEncryption LOGS_EMAIL diff --git a/SignalShareExtension/Info.plist b/SignalShareExtension/Info.plist index 1f3d88acf..eaccdb4c0 100644 --- a/SignalShareExtension/Info.plist +++ b/SignalShareExtension/Info.plist @@ -19,7 +19,7 @@ CFBundleShortVersionString 2.38.1 CFBundleVersion - 2.38.1.1 + 2.38.1.2 ITSAppUsesNonExemptEncryption NSAppTransportSecurity