From 96e5a8f4b72e454430dfa16f92877f8e2f3ce13e Mon Sep 17 00:00:00 2001 From: Michael Kirk Date: Mon, 19 Mar 2018 13:00:19 -0400 Subject: [PATCH] One time thumbnail generation // FREEBIE --- Signal/src/AppDelegate.m | 12 ++++++++++++ SignalMessaging/utils/OWSPreferences.h | 3 +++ SignalMessaging/utils/OWSPreferences.m | 15 ++++++++++++++- 3 files changed, 29 insertions(+), 1 deletion(-) 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];