tweak: fix an issue where we may delete the wrong open group message and update reactions to wrong open group messages in other threads with the same server id

pull/676/head
Ryan Zhao 2 years ago
parent 6d94866110
commit f9c2a2ce99

@ -594,6 +594,7 @@ public final class OpenGroupManager: NSObject {
try MessageReceiver.handleOpenGroupReactions( try MessageReceiver.handleOpenGroupReactions(
db, db,
threadId: openGroup.threadId,
openGroupMessageServerId: message.id, openGroupMessageServerId: message.id,
openGroupReactions: reactions openGroupReactions: reactions
) )
@ -608,6 +609,7 @@ public final class OpenGroupManager: NSObject {
guard !messageServerIdsToRemove.isEmpty else { return } guard !messageServerIdsToRemove.isEmpty else { return }
_ = try? Interaction _ = try? Interaction
.filter(Interaction.Columns.threadId == openGroup.threadId)
.filter(messageServerIdsToRemove.contains(Interaction.Columns.openGroupServerMessageId)) .filter(messageServerIdsToRemove.contains(Interaction.Columns.openGroupServerMessageId))
.deleteAll(db) .deleteAll(db)
} }

@ -249,11 +249,13 @@ public enum MessageReceiver {
public static func handleOpenGroupReactions( public static func handleOpenGroupReactions(
_ db: Database, _ db: Database,
threadId: String,
openGroupMessageServerId: Int64, openGroupMessageServerId: Int64,
openGroupReactions: [Reaction] openGroupReactions: [Reaction]
) throws { ) throws {
guard let interactionId: Int64 = try? Interaction guard let interactionId: Int64 = try? Interaction
.select(.id) .select(.id)
.filter(Interaction.Columns.threadId == threadId)
.filter(Interaction.Columns.openGroupServerMessageId == openGroupMessageServerId) .filter(Interaction.Columns.openGroupServerMessageId == openGroupMessageServerId)
.asRequest(of: Int64.self) .asRequest(of: Int64.self)
.fetchOne(db) .fetchOne(db)

Loading…
Cancel
Save