diff --git a/Session/Conversations/ConversationVC+Interaction.swift b/Session/Conversations/ConversationVC+Interaction.swift index 95f180ae7..315885419 100644 --- a/Session/Conversations/ConversationVC+Interaction.swift +++ b/Session/Conversations/ConversationVC+Interaction.swift @@ -844,7 +844,9 @@ extension ConversationVC : InputViewDelegate, MessageCellDelegate, ContextMenuAc } func cancelAllReact(reactMessages: [ReactMessage]) { - + guard let groupThread = thread as? TSGroupThread, groupThread.isOpenGroup else { return } + guard let threadId = groupThread.uniqueId, let openGroupV2 = Storage.shared.getV2OpenGroup(for: threadId) else { return } + OpenGroupAPIV2.batchDeleteMessages(for: openGroupV2.room, on: openGroupV2.server, messageIds: reactMessages.compactMap{ $0.messageId }) } private func react(_ viewItem: ConversationViewItem, with emoji: String, cancel: Bool) { diff --git a/SessionMessagingKit/Open Groups/OpenGroupAPIV2.swift b/SessionMessagingKit/Open Groups/OpenGroupAPIV2.swift index 97532799d..bbefb9118 100644 --- a/SessionMessagingKit/Open Groups/OpenGroupAPIV2.swift +++ b/SessionMessagingKit/Open Groups/OpenGroupAPIV2.swift @@ -368,6 +368,12 @@ public final class OpenGroupAPIV2 : NSObject { } } + public static func batchDeleteMessages(for room: String, on server: String, messageIds: [String]) -> Promise { + let json: JSON = ["ids": messageIds.compactMap{ Int($0) }] + let request = Request(verb: .post, room: room, server: server, endpoint: "delete_messages", parameters: json) + return send(request).map(on: OpenGroupAPIV2.workQueue) { _ in } + } + private static func parseDeletions(from rawDeletions: [JSON], for room: String, on server: String) -> Promise<[Deletion]> { let storage = SNMessagingKitConfiguration.shared.storage let deletions = rawDeletions.compactMap { Deletion.from($0) }