|
|
|
@ -1187,9 +1187,15 @@ NSString *NSStringForOWSMessageCellType(OWSMessageCellType cellType)
|
|
|
|
|
TSMessage *message = (TSMessage *)self.interaction;
|
|
|
|
|
if (!message.isGroupChatMessage) return;
|
|
|
|
|
|
|
|
|
|
__block LKGroupChat *groupChat;
|
|
|
|
|
[self.primaryStorage.dbReadConnection readWithBlock:^(YapDatabaseReadTransaction *transaction) {
|
|
|
|
|
groupChat = [LKDatabaseUtilities getGroupChatForThreadID:groupThread.uniqueId transaction: transaction];
|
|
|
|
|
}];
|
|
|
|
|
if (groupChat == nil) return;
|
|
|
|
|
|
|
|
|
|
// Delete the message
|
|
|
|
|
BOOL isSentByUser = (interationType == OWSInteractionType_OutgoingMessage);
|
|
|
|
|
[[LKGroupChatAPI deleteMessageWithID:message.groupChatServerID forGroup:LKGroupChatAPI.publicChatServerID onServer:LKGroupChatAPI.publicChatServer isSentByUser:isSentByUser].catch(^(NSError *error) {
|
|
|
|
|
[[LKGroupChatAPI deleteMessageWithID:message.groupChatServerID forGroup:groupChat.channel onServer:groupChat.server isSentByUser:isSentByUser].catch(^(NSError *error) {
|
|
|
|
|
// Roll back
|
|
|
|
|
[self.interaction save];
|
|
|
|
|
}) retainUntilComplete];
|
|
|
|
@ -1256,9 +1262,16 @@ NSString *NSStringForOWSMessageCellType(OWSMessageCellType cellType)
|
|
|
|
|
TSMessage *message = (TSMessage *)self.interaction;
|
|
|
|
|
if (!message.isGroupChatMessage) return false;
|
|
|
|
|
|
|
|
|
|
// Make sure we have the details to contact the server
|
|
|
|
|
__block LKGroupChat *groupChat;
|
|
|
|
|
[self.primaryStorage.dbReadConnection readWithBlock:^(YapDatabaseReadTransaction *transaction) {
|
|
|
|
|
groupChat = [LKDatabaseUtilities getGroupChatForThreadID:groupThread.uniqueId transaction: transaction];
|
|
|
|
|
}];
|
|
|
|
|
if (groupChat == nil) return false;
|
|
|
|
|
|
|
|
|
|
// Only allow deletion on incoming messages if the user has moderation permission
|
|
|
|
|
if (interationType == OWSInteractionType_IncomingMessage) {
|
|
|
|
|
BOOL isModerator = [LKGroupChatAPI isUserModerator:self.userHexEncodedPublicKey forGroup:LKGroupChatAPI.publicChatServerID onServer: LKGroupChatAPI.publicChatServer];
|
|
|
|
|
BOOL isModerator = [LKGroupChatAPI isUserModerator:self.userHexEncodedPublicKey forGroup:groupChat.channel onServer:groupChat.server];
|
|
|
|
|
if (!isModerator) return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|