From 83252650b1ac592199cdf2d5156dc54195ea6b4f Mon Sep 17 00:00:00 2001 From: Ryan Zhao Date: Fri, 30 Jul 2021 14:21:43 +1000 Subject: [PATCH] unsend request handler --- .../MessageReceiver+Handling.swift | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/SessionMessagingKit/Sending & Receiving/MessageReceiver+Handling.swift b/SessionMessagingKit/Sending & Receiving/MessageReceiver+Handling.swift index ffebdd830..684d5e176 100644 --- a/SessionMessagingKit/Sending & Receiving/MessageReceiver+Handling.swift +++ b/SessionMessagingKit/Sending & Receiving/MessageReceiver+Handling.swift @@ -14,6 +14,7 @@ extension MessageReceiver { case let message as DataExtractionNotification: handleDataExtractionNotification(message, using: transaction) case let message as ExpirationTimerUpdate: handleExpirationTimerUpdate(message, using: transaction) case let message as ConfigurationMessage: handleConfigurationMessage(message, using: transaction) + case let message as UnsendRequest: handleUnsendRequest(message, using: transaction) case let message as VisibleMessage: try handleVisibleMessage(message, associatedWithProto: proto, openGroupID: openGroupID, isBackgroundPoll: isBackgroundPoll, using: transaction) default: fatalError() } @@ -218,6 +219,19 @@ extension MessageReceiver { + // MARK: - Unsend Requests + + public static func handleUnsendRequest(_ message: UnsendRequest, using transaction: Any) { + guard message.sender == message.author else { return } + let userPublicKey = getUserHexEncodedPublicKey() + let transaction = transaction as! YapDatabaseReadWriteTransaction + if let author = message.author, let timestamp = message.timestamp, + let messageToDelete = userPublicKey == message.sender ? TSOutgoingMessage.find(withTimestamp: timestamp) : TSIncomingMessage.find(withAuthorId: author, timestamp: timestamp, transaction: transaction) { + messageToDelete.remove(with: transaction) + } + } + + // MARK: - Visible Messages @discardableResult