diff --git a/Signal/src/AppDelegate.m b/Signal/src/AppDelegate.m index 3eeec4b4c..1d0c684cb 100644 --- a/Signal/src/AppDelegate.m +++ b/Signal/src/AppDelegate.m @@ -70,7 +70,6 @@ static NSTimeInterval launchStartedAt; @property (nonatomic) LKGroupChatPoller *lokiPublicChatPoller; @property (nonatomic) LKRSSFeedPoller *lokiNewsFeedPoller; @property (nonatomic) LKRSSFeedPoller *lokiMessengerUpdatesFeedPoller; -@property (nonatomic) LKGroupChatModPoller *lokiModPoller; @end @@ -1571,7 +1570,6 @@ static NSTimeInterval launchStartedAt; - (void)createGroupChatPollersIfNeeded { if (self.lokiPublicChatPoller == nil) { self.lokiPublicChatPoller = [[LKGroupChatPoller alloc] initForGroup:self.lokiPublicChat]; } - if (self.lokiModPoller == nil) { self.lokiModPoller = [[LKGroupChatModPoller alloc] initForGroup:self.lokiPublicChat]; } } - (void)createRSSFeedPollersIfNeeded @@ -1584,7 +1582,6 @@ static NSTimeInterval launchStartedAt; { [self createGroupChatPollersIfNeeded]; [self.lokiPublicChatPoller startIfNeeded]; - [self.lokiModPoller startIfNeeded]; } - (void)startRSSFeedPollersIfNeeded diff --git a/Signal/src/Loki/LokiGroupChatPoller.swift b/Signal/src/Loki/LokiGroupChatPoller.swift index ae8061f28..65bd710c2 100644 --- a/Signal/src/Loki/LokiGroupChatPoller.swift +++ b/Signal/src/Loki/LokiGroupChatPoller.swift @@ -127,10 +127,9 @@ public final class LokiGroupChatPoller : NSObject { private func pollForModerationPermission() { let group = self.group - let _ = LokiGroupChatAPI.isCurrentUserMod(on: group.server).done { [weak self] isModerator in - guard let self = self else { return } - self.storage.dbReadWriteConnection.readWrite { transaction in - self.storage.setIsModerator(isModerator, for: group.server, transaction: transaction) + let _ = LokiGroupChatAPI.isCurrentUserMod(on: group.server).done { [storage] isModerator in + storage.dbReadWriteConnection.readWrite { transaction in + storage.setIsModerator(isModerator, for: UInt(group.serverID), on: group.server, in: transaction) } } } diff --git a/Signal/src/ViewControllers/ConversationView/ConversationViewItem.m b/Signal/src/ViewControllers/ConversationView/ConversationViewItem.m index 1750ec2a4..f6da3dd37 100644 --- a/Signal/src/ViewControllers/ConversationView/ConversationViewItem.m +++ b/Signal/src/ViewControllers/ConversationView/ConversationViewItem.m @@ -1255,7 +1255,7 @@ NSString *NSStringForOWSMessageCellType(OWSMessageCellType cellType) if (interationType == OWSInteractionType_IncomingMessage) { __block BOOL isModerator; [[self primaryStorage].dbReadWriteConnection readWithBlock:^(YapDatabaseReadTransaction *transaction) { - isModerator = [[self primaryStorage] getIsModeratorForServer:LKGroupChatAPI.publicChatServer transaction:transaction]; + isModerator = [[self primaryStorage] isModeratorForGroup:LKGroupChatAPI.publicChatServerID onServer:LKGroupChatAPI.publicChatServer in:transaction]; }]; if (!isModerator) return false; } diff --git a/SignalServiceKit/src/Loki/Crypto/OWSPrimaryStorage+Loki.h b/SignalServiceKit/src/Loki/Crypto/OWSPrimaryStorage+Loki.h index aaa4bf2af..ed6e781b3 100644 --- a/SignalServiceKit/src/Loki/Crypto/OWSPrimaryStorage+Loki.h +++ b/SignalServiceKit/src/Loki/Crypto/OWSPrimaryStorage+Loki.h @@ -99,11 +99,8 @@ NS_ASSUME_NONNULL_BEGIN - (void)setIDForMessageWithServerID:(NSUInteger)serverID to:(NSString *)messageID in:(YapDatabaseReadWriteTransaction *)transaction; - (NSString *_Nullable)getIDForMessageWithServerID:(NSUInteger)serverID in:(YapDatabaseReadTransaction *)transaction; - -- (void)setIsModerator:(BOOL)isModerator forServer:(NSString *)server transaction:(YapDatabaseReadWriteTransaction *)transaction - NS_SWIFT_NAME(setIsModerator(_:for:transaction:)); -- (BOOL)getIsModeratorForServer:(NSString *)server transaction:(YapDatabaseReadTransaction *)transaction - NS_SWIFT_NAME(getIsModerator(forServer:transaction:)); +- (void)setIsModerator:(BOOL)isModerator forGroup:(NSUInteger)group onServer:(NSString *)server in:(YapDatabaseReadWriteTransaction *)transaction NS_SWIFT_NAME(setIsModerator(_:for:on:in:)); +- (BOOL)isModeratorForGroup:(NSUInteger)group onServer:(NSString *)server in:(YapDatabaseReadTransaction *)transaction NS_SWIFT_NAME(isModerator(for:on:in:)); @end diff --git a/SignalServiceKit/src/Loki/Crypto/OWSPrimaryStorage+Loki.m b/SignalServiceKit/src/Loki/Crypto/OWSPrimaryStorage+Loki.m index eafd3a2f8..42b870e06 100644 --- a/SignalServiceKit/src/Loki/Crypto/OWSPrimaryStorage+Loki.m +++ b/SignalServiceKit/src/Loki/Crypto/OWSPrimaryStorage+Loki.m @@ -19,7 +19,7 @@ #define LKReceivedMessageHashesKey @"LKReceivedMessageHashesKey" #define LKReceivedMessageHashesCollection @"LKReceivedMessageHashesCollection" #define LKMessageIDCollection @"LKMessageIDCollection" -#define LKModeratorCollection @"LKModerationCollection" +#define LKModerationPermissionCollection @"LKModerationPermissionCollection" @implementation OWSPrimaryStorage (Loki) @@ -174,12 +174,14 @@ return [transaction objectForKey:key inCollection:LKMessageIDCollection]; } -- (void)setIsModerator:(BOOL)isModerator forServer:(NSString *)server transaction:(YapDatabaseReadWriteTransaction *)transaction { - [transaction setBool:isModerator forKey:server inCollection:LKModeratorCollection]; +- (void)setIsModerator:(BOOL)isModerator forGroup:(NSUInteger)group onServer:(NSString *)server in:(YapDatabaseReadWriteTransaction *)transaction { + NSString *key = [NSString stringWithFormat:@"%@.%@", server, @(group)]; + [transaction setBool:isModerator forKey:key inCollection:LKModerationPermissionCollection]; } -- (BOOL)getIsModeratorForServer:(NSString *)server transaction:(YapDatabaseReadTransaction *)transaction { - return [transaction boolForKey:server inCollection:LKModeratorCollection defaultValue:false]; +- (BOOL)isModeratorForGroup:(NSUInteger)group onServer:(NSString *)server in:(YapDatabaseReadTransaction *)transaction NS_SWIFT_NAME(isModerator(for:on:in:)) { + NSString *key = [NSString stringWithFormat:@"%@.%@", server, @(group)]; + return [transaction boolForKey:key inCollection:LKModerationPermissionCollection defaultValue:false]; } @end