diff --git a/Signal/src/AppDelegate.m b/Signal/src/AppDelegate.m index 892f9c0fc..c82404617 100644 --- a/Signal/src/AppDelegate.m +++ b/Signal/src/AppDelegate.m @@ -1147,6 +1147,18 @@ static NSString *const kURLHostVerifyPrefix = @"verify"; [[OWSMessageReceiver sharedInstance] handleAnyUnprocessedEnvelopesAsync]; [[OWSBatchMessageProcessor sharedInstance] handleAnyUnprocessedEnvelopesAsync]; + if (!Environment.preferences.hasGeneratedThumbnails) { + [OWSPrimaryStorage.sharedManager.newDatabaseConnection + asyncReadWithBlock:^(YapDatabaseReadTransaction *_Nonnull transaction) { + [TSAttachmentStream enumerateCollectionObjectsUsingBlock:^(id _Nonnull obj, BOOL *_Nonnull stop){ + // no-op. It's sufficient to initWithCoder: each object. + }]; + } + completionBlock:^{ + [Environment.preferences setHasGeneratedThumbnails:YES]; + }]; + } + #ifdef DEBUG // A bug in orphan cleanup could be disastrous so let's only // run it in DEBUG builds for a few releases. diff --git a/SignalMessaging/utils/OWSPreferences.h b/SignalMessaging/utils/OWSPreferences.h index a0c1884cb..a89fa53d1 100644 --- a/SignalMessaging/utils/OWSPreferences.h +++ b/SignalMessaging/utils/OWSPreferences.h @@ -61,6 +61,9 @@ extern NSString *const OWSPreferencesCallLoggingDidChangeNotification; - (void)setIOSUpgradeNagDate:(NSDate *)value; - (nullable NSDate *)iOSUpgradeNagDate; +- (BOOL)hasGeneratedThumbnails; +- (void)setHasGeneratedThumbnails:(BOOL)value; + #pragma mark - Calling #pragma mark Callkit diff --git a/SignalMessaging/utils/OWSPreferences.m b/SignalMessaging/utils/OWSPreferences.m index 0ba08d806..dc11c5cf3 100644 --- a/SignalMessaging/utils/OWSPreferences.m +++ b/SignalMessaging/utils/OWSPreferences.m @@ -4,11 +4,11 @@ #import "OWSPreferences.h" #import +#import #import #import #import #import -#import NS_ASSUME_NONNULL_BEGIN @@ -28,6 +28,7 @@ NSString *const OWSPreferencesKeyCallKitPrivacyEnabled = @"CallKitPrivacyEnabled NSString *const OWSPreferencesKeyCallsHideIPAddress = @"CallsHideIPAddress"; NSString *const OWSPreferencesKeyRemoveMetadata = @"Remove Metadata Key"; NSString *const OWSPreferencesKeyHasDeclinedNoContactsView = @"hasDeclinedNoContactsView"; +NSString *const OWSPreferencesKeyHasGeneratedThumbnails = @"OWSPreferencesKeyHasGeneratedThumbnails"; NSString *const OWSPreferencesKeyIOSUpgradeNagDate = @"iOSUpgradeNagDate"; NSString *const OWSPreferencesKey_IsReadyForAppExtensions = @"isReadyForAppExtensions_5"; NSString *const OWSPreferencesKeySystemCallLogEnabled = @"OWSPreferencesKeySystemCallLogEnabled"; @@ -194,6 +195,18 @@ NSString *const OWSPreferencesKeySystemCallLogEnabled = @"OWSPreferencesKeySyste [self setValueForKey:OWSPreferencesKeyHasDeclinedNoContactsView toValue:@(value)]; } +- (BOOL)hasGeneratedThumbnails +{ + NSNumber *preference = [self tryGetValueForKey:OWSPreferencesKeyHasGeneratedThumbnails]; + // Default to NO. + return preference ? [preference boolValue] : NO; +} + +- (void)setHasGeneratedThumbnails:(BOOL)value +{ + [self setValueForKey:OWSPreferencesKeyHasGeneratedThumbnails toValue:@(value)]; +} + - (void)setIOSUpgradeNagDate:(NSDate *)value { [self setValueForKey:OWSPreferencesKeyIOSUpgradeNagDate toValue:value];