From cbc93ae0e6c3b55c96a2acad3f4ca92b59a19926 Mon Sep 17 00:00:00 2001 From: Matthew Chen Date: Fri, 23 Oct 2020 10:23:27 -0300 Subject: [PATCH 1/5] Re-show message requests splash on launch if profile name is missing. --- SignalServiceKit/src/Util/ExperienceUpgradeFinder.swift | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/SignalServiceKit/src/Util/ExperienceUpgradeFinder.swift b/SignalServiceKit/src/Util/ExperienceUpgradeFinder.swift index 3b3382fd49..6d144a71a9 100644 --- a/SignalServiceKit/src/Util/ExperienceUpgradeFinder.swift +++ b/SignalServiceKit/src/Util/ExperienceUpgradeFinder.swift @@ -125,6 +125,8 @@ public enum ExperienceUpgradeId: String, CaseIterable { switch self { case .pinReminder: return false + case .messageRequests: + return false default: return true } @@ -140,6 +142,8 @@ public enum ExperienceUpgradeId: String, CaseIterable { return false case .contactPermissionReminder: return false + case .messageRequests: + return false default: return true } @@ -261,7 +265,10 @@ public class ExperienceUpgradeFinder: NSObject { while true { guard let experienceUpgrade = try? cursor.next() else { break } - + guard experienceUpgrade.id.shouldSave else { + // Ignore saved upgrades that we don't currently save. + continue + } if !experienceUpgrade.isComplete && !experienceUpgrade.hasCompletedVisibleDuration { experienceUpgrades.append(experienceUpgrade) } From 8a73ba81e26d84f6d561d88cf56d35ab0fc152be Mon Sep 17 00:00:00 2001 From: Matthew Chen Date: Fri, 23 Oct 2020 10:41:35 -0300 Subject: [PATCH 2/5] "Bump build to 3.20.1.2." --- NotificationServiceExtension/Info.plist | 2 +- Signal/Signal-Info.plist | 2 +- SignalShareExtension/Info.plist | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/NotificationServiceExtension/Info.plist b/NotificationServiceExtension/Info.plist index 9d793bf588..243fd4599f 100644 --- a/NotificationServiceExtension/Info.plist +++ b/NotificationServiceExtension/Info.plist @@ -19,7 +19,7 @@ CFBundleShortVersionString 3.20.1 CFBundleVersion - 3.20.1.1 + 3.20.1.2 NSAppTransportSecurity NSExceptionDomains diff --git a/Signal/Signal-Info.plist b/Signal/Signal-Info.plist index a0c6267ff8..c1509ec92a 100644 --- a/Signal/Signal-Info.plist +++ b/Signal/Signal-Info.plist @@ -45,7 +45,7 @@ CFBundleVersion - 3.20.1.1 + 3.20.1.2 ITSAppUsesNonExemptEncryption LOGS_EMAIL diff --git a/SignalShareExtension/Info.plist b/SignalShareExtension/Info.plist index ba4eeb1c72..8330051265 100644 --- a/SignalShareExtension/Info.plist +++ b/SignalShareExtension/Info.plist @@ -19,7 +19,7 @@ CFBundleShortVersionString 3.20.1 CFBundleVersion - 3.20.1.1 + 3.20.1.2 ITSAppUsesNonExemptEncryption NSAppTransportSecurity From cf5a313ed072187f46a868909dca2cd57b56c766 Mon Sep 17 00:00:00 2001 From: Matthew Chen Date: Fri, 23 Oct 2020 12:20:14 -0300 Subject: [PATCH 3/5] Never clear the local profile name. --- SignalServiceKit/src/Util/OWSUserProfile.m | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/SignalServiceKit/src/Util/OWSUserProfile.m b/SignalServiceKit/src/Util/OWSUserProfile.m index 7cf349c143..9bf21c885a 100644 --- a/SignalServiceKit/src/Util/OWSUserProfile.m +++ b/SignalServiceKit/src/Util/OWSUserProfile.m @@ -409,6 +409,21 @@ NSUInteger const kUserProfileSchemaVersion = 1; equalTo:profile.familyName]; BOOL avatarUrlPathDidChange = ![NSObject isNullableObject:avatarUrlPathBefore equalTo:profile.avatarUrlPath]; + + if ([profile.address.phoneNumber + isEqualToString:kLocalProfileInvariantPhoneNumber]) { + BOOL hasValidProfileNameBefore + = givenNameBefore.filterStringForDisplay.length > 0; + BOOL hasValidProfileNameAfter + = profile.givenName.filterStringForDisplay.length > 0; + if (hasValidProfileNameBefore && !hasValidProfileNameAfter) { + OWSFailDebug(@"Restoring local profile name."); + // Profile names are required; never clear the profile + // name for the local user. + profile.givenName = givenNameBefore; + } + } + NSString *profileKeyDescription; if (profile.profileKey.keyData != nil) { if (SSKDebugFlags.internalLogging) { From f272471db582770fa805ccfdc00884ddd8fe62f3 Mon Sep 17 00:00:00 2001 From: Matthew Chen Date: Fri, 23 Oct 2020 14:01:44 -0300 Subject: [PATCH 4/5] Re-upload protected profiled names. --- SignalMessaging/profiles/OWSProfileManager.m | 7 ++++++ .../src/Protocols/ProfileManagerProtocol.h | 2 ++ .../src/TestUtils/OWSFakeProfileManager.m | 5 ++++ SignalServiceKit/src/Util/Atomics.swift | 2 +- SignalServiceKit/src/Util/OWSUserProfile.m | 24 +++++++++++++++---- 5 files changed, 35 insertions(+), 5 deletions(-) diff --git a/SignalMessaging/profiles/OWSProfileManager.m b/SignalMessaging/profiles/OWSProfileManager.m index 4f23c21607..bc06779a47 100644 --- a/SignalMessaging/profiles/OWSProfileManager.m +++ b/SignalMessaging/profiles/OWSProfileManager.m @@ -453,6 +453,13 @@ const NSString *kNSNotificationKey_WasLocallyInitiated = @"kNSNotificationKey_Wa }); } +- (void)reuploadLocalProfile +{ + [self reuploadLocalProfilePromiseObjc].then(^{ OWSLogInfo(@"Done."); }).catch(^(NSError *error) { + OWSFailDebug(@"Error: %@", error); + }); +} + #pragma mark - Profile Key Rotation - (nullable NSString *)groupKeyForGroupId:(NSData *)groupId { diff --git a/SignalServiceKit/src/Protocols/ProfileManagerProtocol.h b/SignalServiceKit/src/Protocols/ProfileManagerProtocol.h index 56f8497bba..dd5d058d7b 100644 --- a/SignalServiceKit/src/Protocols/ProfileManagerProtocol.h +++ b/SignalServiceKit/src/Protocols/ProfileManagerProtocol.h @@ -130,6 +130,8 @@ NS_ASSUME_NONNULL_BEGIN - (void)didSendOrReceiveMessageFromAddress:(SignalServiceAddress *)address transaction:(SDSAnyWriteTransaction *)transaction; +- (void)reuploadLocalProfile; + @end NS_ASSUME_NONNULL_END diff --git a/SignalServiceKit/src/TestUtils/OWSFakeProfileManager.m b/SignalServiceKit/src/TestUtils/OWSFakeProfileManager.m index b5116b94fc..b3f5993a1a 100644 --- a/SignalServiceKit/src/TestUtils/OWSFakeProfileManager.m +++ b/SignalServiceKit/src/TestUtils/OWSFakeProfileManager.m @@ -322,6 +322,11 @@ NS_ASSUME_NONNULL_BEGIN // Do nothing. } +- (void)reuploadLocalProfile +{ + // Do nothing. +} + @end #endif diff --git a/SignalServiceKit/src/Util/Atomics.swift b/SignalServiceKit/src/Util/Atomics.swift index 3defe8a0f5..395c8b1042 100644 --- a/SignalServiceKit/src/Util/Atomics.swift +++ b/SignalServiceKit/src/Util/Atomics.swift @@ -34,7 +34,7 @@ private class Atomics { public class AtomicBool: NSObject { private let value = AtomicValue(false) - @objc + @objc(initWithValue:) public required init(_ value: Bool) { self.value.set(value) } diff --git a/SignalServiceKit/src/Util/OWSUserProfile.m b/SignalServiceKit/src/Util/OWSUserProfile.m index 9bf21c885a..247e6fd511 100644 --- a/SignalServiceKit/src/Util/OWSUserProfile.m +++ b/SignalServiceKit/src/Util/OWSUserProfile.m @@ -351,6 +351,18 @@ NSUInteger const kUserProfileSchemaVersion = 1; #pragma mark - Update With... Methods ++ (BOOL)shouldReuploadProtectedProfileName +{ + // Only re-upload once per launch. + // + // This value will only be accessed within write transactions, + // so it is thread-safe. + static BOOL hasReuploaded = NO; + BOOL canReupload = !hasReuploaded; + hasReuploaded = YES; + return canReupload; +} + // Similar in spirit to anyUpdateWithTransaction, // but with significant differences. // @@ -412,15 +424,19 @@ NSUInteger const kUserProfileSchemaVersion = 1; if ([profile.address.phoneNumber isEqualToString:kLocalProfileInvariantPhoneNumber]) { - BOOL hasValidProfileNameBefore - = givenNameBefore.filterStringForDisplay.length > 0; - BOOL hasValidProfileNameAfter - = profile.givenName.filterStringForDisplay.length > 0; + BOOL hasValidProfileNameBefore = givenNameBefore.length > 0; + BOOL hasValidProfileNameAfter = profile.givenName.length > 0; if (hasValidProfileNameBefore && !hasValidProfileNameAfter) { OWSFailDebug(@"Restoring local profile name."); // Profile names are required; never clear the profile // name for the local user. profile.givenName = givenNameBefore; + + if (OWSUserProfile.shouldReuploadProtectedProfileName) { + [transaction addAsyncCompletionOffMain:^{ + [self.profileManager reuploadLocalProfile]; + }]; + } } } From 2f3248a7cf1553dcd0272ee954dc259c3d3a57ea Mon Sep 17 00:00:00 2001 From: Matthew Chen Date: Fri, 23 Oct 2020 14:03:59 -0300 Subject: [PATCH 5/5] "Bump build to 3.20.1.3." --- NotificationServiceExtension/Info.plist | 2 +- Signal/Signal-Info.plist | 2 +- SignalShareExtension/Info.plist | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/NotificationServiceExtension/Info.plist b/NotificationServiceExtension/Info.plist index 243fd4599f..a8e340df46 100644 --- a/NotificationServiceExtension/Info.plist +++ b/NotificationServiceExtension/Info.plist @@ -19,7 +19,7 @@ CFBundleShortVersionString 3.20.1 CFBundleVersion - 3.20.1.2 + 3.20.1.3 NSAppTransportSecurity NSExceptionDomains diff --git a/Signal/Signal-Info.plist b/Signal/Signal-Info.plist index c1509ec92a..58c4a80a55 100644 --- a/Signal/Signal-Info.plist +++ b/Signal/Signal-Info.plist @@ -45,7 +45,7 @@ CFBundleVersion - 3.20.1.2 + 3.20.1.3 ITSAppUsesNonExemptEncryption LOGS_EMAIL diff --git a/SignalShareExtension/Info.plist b/SignalShareExtension/Info.plist index 8330051265..cdcbb847a7 100644 --- a/SignalShareExtension/Info.plist +++ b/SignalShareExtension/Info.plist @@ -19,7 +19,7 @@ CFBundleShortVersionString 3.20.1 CFBundleVersion - 3.20.1.2 + 3.20.1.3 ITSAppUsesNonExemptEncryption NSAppTransportSecurity