Merge pull request #478 from RyanRory/fine-grained-notification-settings-2

Fix Mentions Only Notification Issues
This commit is contained in:
Niels Andriesse 2021-07-30 10:00:39 +10:00 committed by GitHub
commit b1e500d256
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 17 additions and 16 deletions

View File

@ -1,19 +1,8 @@
{
"images" : [
{
"filename" : "ic_notification_mentions.png",
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "ic_notification_mentions-1.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "ic_notification_mentions-2.png",
"idiom" : "universal",
"scale" : "3x"
"filename" : "ic_notifications_mentions.pdf",
"idiom" : "universal"
}
],
"info" : {

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.5 KiB

View File

@ -168,8 +168,7 @@ public class NotificationPresenter: NSObject, NotificationsProtocol {
// Don't fire the notification if the current user isn't mentioned
// and isOnlyNotifyingForMentions is on.
let isUserMentioned = MentionUtilities.isUserMentioned(in: messageText ?? "")
if let groupThread = thread as? TSGroupThread, groupThread.isOnlyNotifyingForMentions && !isUserMentioned {
if let groupThread = thread as? TSGroupThread, groupThread.isOnlyNotifyingForMentions && !incomingMessage.isUserMentioned {
return
}

View File

@ -16,6 +16,8 @@ NS_ASSUME_NONNULL_BEGIN
@property (nonatomic, readonly) BOOL wasReceivedByUD;
@property (nonatomic, readonly) BOOL isUserMentioned;
- (instancetype)initMessageWithTimestamp:(uint64_t)timestamp
inThread:(nullable TSThread *)thread
messageBody:(nullable NSString *)body

View File

@ -13,6 +13,7 @@
#import "TSGroupThread.h"
#import <YapDatabase/YapDatabaseConnection.h>
#import <SessionUtilitiesKit/SessionUtilitiesKit.h>
#import <SessionMessagingKit/SessionMessagingKit-Swift.h>
NS_ASSUME_NONNULL_BEGIN
@ -121,6 +122,12 @@ NS_ASSUME_NONNULL_BEGIN
return self.isExpiringMessage;
}
- (BOOL)isUserMentioned
{
NSString *userPublicKey = [SNGeneralUtilities getUserPublicKey];
return (self.body != nil && [self.body containsString:[NSString stringWithFormat:@"@%@", userPublicKey]]) || (self.quotedMessage != nil && [self.quotedMessage.authorId isEqualToString:userPublicKey]);
}
#pragma mark - OWSReadTracking
- (BOOL)shouldAffectUnreadCounts

View File

@ -73,7 +73,7 @@ NS_ASSUME_NONNULL_BEGIN
YapDatabaseViewTransaction *unreadMessages = [transaction ext:TSUnreadDatabaseViewExtensionName];
NSArray<NSString *> *allGroups = [unreadMessages allGroups];
for (NSString *groupID in allGroups) {
TSThread *thread = [TSThread fetchObjectWithUniqueID:groupID transaction:transaction];
TSGroupThread *thread = [TSGroupThread fetchObjectWithUniqueID:groupID transaction:transaction];
if (thread.isMuted) continue;
[unreadMessages enumerateKeysAndObjectsInGroup:groupID
usingBlock:^(NSString *collection, NSString *key, id object, NSUInteger index, BOOL *stop) {
@ -85,6 +85,10 @@ NS_ASSUME_NONNULL_BEGIN
NSLog(@"Found an already read message in the * unread * messages list.");
return;
}
TSIncomingMessage * incomingMessage = (TSIncomingMessage *)object;
if (incomingMessage != nil && thread.isOnlyNotifyingForMentions && !incomingMessage.isUserMentioned) {
return;
}
count += 1;
}];
}