diff --git a/src/Devices/OWSReadReceiptObserver.h b/src/Devices/OWSReadReceiptObserver.h index d1c9d82ba..ce1e552cd 100644 --- a/src/Devices/OWSReadReceiptObserver.h +++ b/src/Devices/OWSReadReceiptObserver.h @@ -6,9 +6,9 @@ NS_ASSUME_NONNULL_BEGIN @interface OWSReadReceiptObserver : NSObject -- (instancetype)initWithMessagesManager:(TSMessagesManager *)messagesManager; +- (instancetype)initWithMessagesManager:(TSMessagesManager *)messagesManager NS_DESIGNATED_INITIALIZER; - (void)startObserving; @end -NS_ASSUME_NONNULL_END \ No newline at end of file +NS_ASSUME_NONNULL_END diff --git a/src/Devices/OWSReadReceiptObserver.m b/src/Devices/OWSReadReceiptObserver.m index a128e686b..bda0d195e 100644 --- a/src/Devices/OWSReadReceiptObserver.m +++ b/src/Devices/OWSReadReceiptObserver.m @@ -19,6 +19,16 @@ NS_ASSUME_NONNULL_BEGIN @implementation OWSReadReceiptObserver +- (void)dealloc +{ + [[NSNotificationCenter defaultCenter] removeObserver:self]; +} + +- (instancetype)init +{ + return [self initWithMessagesManager:[TSMessagesManager sharedManager]]; +} + - (instancetype)initWithMessagesManager:(TSMessagesManager *)messagesManager { self = [super init]; diff --git a/src/Devices/OWSReadReceiptsProcessor.h b/src/Devices/OWSReadReceiptsProcessor.h index 3a566a504..63973c0c5 100644 --- a/src/Devices/OWSReadReceiptsProcessor.h +++ b/src/Devices/OWSReadReceiptsProcessor.h @@ -6,6 +6,8 @@ NS_ASSUME_NONNULL_BEGIN @class OWSReadReceipt; @class TSIncomingMessage; +extern NSString *const OWSReadReceiptsProcessorMarkedMessageAsReadNotification; + @interface OWSReadReceiptsProcessor : NSObject - (instancetype)initWithReadReceiptProtos:(NSArray *)readReceiptProtos; @@ -17,4 +19,4 @@ NS_ASSUME_NONNULL_BEGIN @end -NS_ASSUME_NONNULL_END \ No newline at end of file +NS_ASSUME_NONNULL_END diff --git a/src/Devices/OWSReadReceiptsProcessor.m b/src/Devices/OWSReadReceiptsProcessor.m index 65d6765cd..1b69869d3 100644 --- a/src/Devices/OWSReadReceiptsProcessor.m +++ b/src/Devices/OWSReadReceiptsProcessor.m @@ -8,6 +8,9 @@ NS_ASSUME_NONNULL_BEGIN +NSString *const OWSReadReceiptsProcessorMarkedMessageAsReadNotification = + @"OWSReadReceiptsProcessorMarkedMessageAsReadNotification"; + @interface OWSReadReceiptsProcessor () @property (nonatomic, readonly) NSArray *readReceipts; @@ -74,6 +77,9 @@ NS_ASSUME_NONNULL_BEGIN [message markAsReadFromReadReceipt]; // If it was previously saved, no need to keep it around any longer. [readReceipt remove]; + [[NSNotificationCenter defaultCenter] + postNotificationName:OWSReadReceiptsProcessorMarkedMessageAsReadNotification + object:message]; } else { DDLogDebug(@"%@ Received read receipt for an unkown message. Saving it for later.", self.tag); [readReceipt save];