Emit notification when message is read.

We observe this in Signal to remove notifications for messages that were
read remotely.

// FREEBIE
pull/1/head
Michael Kirk 9 years ago
parent 800e2a9541
commit 27dfb59a0c

@ -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
NS_ASSUME_NONNULL_END

@ -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];

@ -6,6 +6,8 @@ NS_ASSUME_NONNULL_BEGIN
@class OWSReadReceipt;
@class TSIncomingMessage;
extern NSString *const OWSReadReceiptsProcessorMarkedMessageAsReadNotification;
@interface OWSReadReceiptsProcessor : NSObject
- (instancetype)initWithReadReceiptProtos:(NSArray<OWSSignalServiceProtosSyncMessageRead *> *)readReceiptProtos;
@ -17,4 +19,4 @@ NS_ASSUME_NONNULL_BEGIN
@end
NS_ASSUME_NONNULL_END
NS_ASSUME_NONNULL_END

@ -8,6 +8,9 @@
NS_ASSUME_NONNULL_BEGIN
NSString *const OWSReadReceiptsProcessorMarkedMessageAsReadNotification =
@"OWSReadReceiptsProcessorMarkedMessageAsReadNotification";
@interface OWSReadReceiptsProcessor ()
@property (nonatomic, readonly) NSArray<OWSReadReceipt *> *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];

Loading…
Cancel
Save