open group batch delete reactions per emoji

pull/638/head
Ryan Zhao 3 years ago
parent d4bca094a1
commit c36a0187a5

@ -386,7 +386,14 @@ extension MessageReceiver {
}
let reactionMessage = ReactMessage(timestamp: timestamp, authorId: author, emoji: reaction.emoji)
reactionMessage.sender = message.sender
if let serverID = message.openGroupServerMessageID { reactionMessage.messageId = "\(serverID)" }
if let serverID = message.openGroupServerMessageID {
reactionMessage.messageId = "\(serverID)"
// Create a lookup between the openGroupServerMessageId and the tsMessage id for easy lookup
// For emoji reacts, the lookup is linking emoji react message server id to the id of the tsMessage that the emoji is reacted to
if let openGroup: OpenGroupV2 = storage.getV2OpenGroup(for: threadID) {
storage.addOpenGroupServerIdLookup(serverID, tsMessageId: tsMessage?.uniqueId, in: openGroup.room, on: openGroup.server, using: transaction)
}
}
if let serverHash = message.serverHash { reactionMessage.messageId = serverHash }
switch reaction.kind {
case .react:

@ -104,8 +104,18 @@ public final class OpenGroupPollerV2 : NSObject {
}
guard let tsMessage: TSMessage = TSMessage.fetch(uniqueId: messageLookup.tsMessageId, transaction: transaction) else { return }
tsMessage.remove(with: transaction)
storage.removeOpenGroupServerIdLookup(openGroupServerMessageId, in: body.room, on: self.server, using: transaction)
if tsMessage.openGroupServerMessageID == openGroupServerMessageId { // This is the case the deleted message is a tsMessage
tsMessage.remove(with: transaction)
storage.removeOpenGroupServerIdLookup(openGroupServerMessageId, in: body.room, on: self.server, using: transaction)
} else { // Otherwise the deleted message is an emoji react
for reaction in tsMessage.reactions {
if let reactMessage = reaction as? ReactMessage, let messageIdString = reactMessage.messageId, let messageId = UInt64(messageIdString), messageId == openGroupServerMessageId {
tsMessage.removeReaction(reactMessage, transaction: transaction)
storage.removeOpenGroupServerIdLookup(openGroupServerMessageId, in: body.room, on: self.server, using: transaction)
break
}
}
}
}
}
}

Loading…
Cancel
Save