diff --git a/SignalServiceKit/src/Messages/OWSBatchMessageProcessor.m b/SignalServiceKit/src/Messages/OWSBatchMessageProcessor.m index 91609dad3..5fe505c7b 100644 --- a/SignalServiceKit/src/Messages/OWSBatchMessageProcessor.m +++ b/SignalServiceKit/src/Messages/OWSBatchMessageProcessor.m @@ -24,9 +24,12 @@ NS_ASSUME_NONNULL_BEGIN @interface OWSMessageContentJob : TSYapDatabaseObject @property (nonatomic, readonly) NSDate *createdAt; +@property (nonatomic, readonly) NSData *envelopeData; +@property (nonatomic, readonly, nullable) NSData *plaintextData; - (instancetype)initWithEnvelopeData:(NSData *)envelopeData plaintextData:(NSData *_Nullable)plaintextData NS_DESIGNATED_INITIALIZER; +- (nullable instancetype)initWithCoder:(NSCoder *)coder NS_DESIGNATED_INITIALIZER; - (instancetype)initWithUniqueId:(NSString *)uniqueId NS_UNAVAILABLE; - (OWSSignalServiceProtosEnvelope *)envelopeProto; @@ -34,15 +37,6 @@ NS_ASSUME_NONNULL_BEGIN #pragma mark - -@interface OWSMessageContentJob () - -@property (nonatomic, readonly) NSData *envelopeData; -@property (nonatomic, readonly, nullable) NSData *plaintextData; - -@end - -#pragma mark - - @implementation OWSMessageContentJob + (NSString *)collection @@ -66,6 +60,11 @@ NS_ASSUME_NONNULL_BEGIN return self; } +- (nullable instancetype)initWithCoder:(NSCoder *)coder +{ + return [super initWithCoder:coder]; +} + - (OWSSignalServiceProtosEnvelope *)envelopeProto { return [OWSSignalServiceProtosEnvelope parseFromData:self.envelopeData]; @@ -75,8 +74,8 @@ NS_ASSUME_NONNULL_BEGIN #pragma mark - Finder -NSString *const OWSMessageContentJobFinderExtensionName = @"OWSBatchMessageProcessingFinderExtensionName"; -NSString *const OWSMessageContentJobFinderExtensionGroup = @"OWSBatchMessageProcessingFinderExtensionGroup"; +NSString *const OWSMessageContentJobFinderExtensionName = @"OWSMessageContentJobFinderExtensionName2"; +NSString *const OWSMessageContentJobFinderExtensionGroup = @"OWSMessageContentJobFinderExtensionGroup2"; @interface OWSMessageContentJobFinder : NSObject diff --git a/SignalServiceKit/src/Messages/OWSMessageReceiver.m b/SignalServiceKit/src/Messages/OWSMessageReceiver.m index 6d58214da..d5c9cb927 100644 --- a/SignalServiceKit/src/Messages/OWSMessageReceiver.m +++ b/SignalServiceKit/src/Messages/OWSMessageReceiver.m @@ -18,15 +18,13 @@ NS_ASSUME_NONNULL_BEGIN -#pragma mark - Persisted data model - -@class OWSSignalServiceProtosEnvelope; - @interface OWSMessageDecryptJob : TSYapDatabaseObject @property (nonatomic, readonly) NSDate *createdAt; +@property (nonatomic, readonly) NSData *envelopeData; - (instancetype)initWithEnvelope:(OWSSignalServiceProtosEnvelope *)envelope NS_DESIGNATED_INITIALIZER; +- (nullable instancetype)initWithCoder:(NSCoder *)coder NS_DESIGNATED_INITIALIZER; - (instancetype)initWithUniqueId:(NSString *)uniqueId NS_UNAVAILABLE; - (OWSSignalServiceProtosEnvelope *)envelopeProto; @@ -34,14 +32,6 @@ NS_ASSUME_NONNULL_BEGIN #pragma mark - -@interface OWSMessageDecryptJob () - -@property (nonatomic, readonly) NSData *envelopeData; - -@end - -#pragma mark - - @implementation OWSMessageDecryptJob + (NSString *)collection @@ -64,6 +54,11 @@ NS_ASSUME_NONNULL_BEGIN return self; } +- (nullable instancetype)initWithCoder:(NSCoder *)coder +{ + return [super initWithCoder:coder]; +} + - (OWSSignalServiceProtosEnvelope *)envelopeProto { return [OWSSignalServiceProtosEnvelope parseFromData:self.envelopeData]; @@ -73,8 +68,8 @@ NS_ASSUME_NONNULL_BEGIN #pragma mark - Finder -NSString *const OWSMessageDecryptJobFinderExtensionName = @"OWSMessageProcessingJobFinderExtensionName"; -NSString *const OWSMessageDecryptJobFinderExtensionGroup = @"OWSMessageProcessingJobFinderExtensionGroup"; +NSString *const OWSMessageDecryptJobFinderExtensionName = @"OWSMessageProcessingJobFinderExtensionName2"; +NSString *const OWSMessageDecryptJobFinderExtensionGroup = @"OWSMessageProcessingJobFinderExtensionGroup2"; @interface OWSMessageDecryptJobFinder : NSObject @@ -103,6 +98,8 @@ NSString *const OWSMessageDecryptJobFinderExtensionGroup = @"OWSMessageProcessin _dbConnection = dbConnection; + [OWSMessageDecryptJobFinder registerLegacyClasses]; + return self; } @@ -180,9 +177,19 @@ NSString *const OWSMessageDecryptJobFinderExtensionGroup = @"OWSMessageProcessin return [[YapDatabaseView alloc] initWithGrouping:grouping sorting:sorting versionTag:@"1" options:options]; } ++ (void)registerLegacyClasses +{ + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + // We've renamed OWSMessageProcessingJob to OWSMessageDecryptJob. + [NSKeyedUnarchiver setClass:[OWSMessageDecryptJob class] forClassName:[OWSMessageDecryptJob collection]]; + }); +} + (void)syncRegisterDatabaseExtension:(YapDatabase *)database { + [self registerLegacyClasses]; + YapDatabaseView *existingView = [database registeredExtension:OWSMessageDecryptJobFinderExtensionName]; if (existingView) { OWSFail(@"%@ was already initialized.", OWSMessageDecryptJobFinderExtensionName); diff --git a/SignalServiceKit/src/Storage/TSStorageManager.m b/SignalServiceKit/src/Storage/TSStorageManager.m index 19828b785..7d9614b26 100644 --- a/SignalServiceKit/src/Storage/TSStorageManager.m +++ b/SignalServiceKit/src/Storage/TSStorageManager.m @@ -186,10 +186,23 @@ void setDatabaseInitialized() - (nullable Class)unarchiver:(NSKeyedUnarchiver *)unarchiver cannotDecodeObjectOfClassName:(NSString *)name originalClasses:(NSArray *)classNames { + DDLogError(@"%@ Could not decode object: %@", self.tag, name); OWSProdError([OWSAnalyticsEvents storageErrorCouldNotDecodeClass]); return [OWSUnknownObject class]; } +#pragma mark - Logging + ++ (NSString *)tag +{ + return [NSString stringWithFormat:@"[%@]", self.class]; +} + +- (NSString *)tag +{ + return self.class.tag; +} + @end #pragma mark -