unsend request handler

This commit is contained in:
Ryan Zhao 2021-07-30 14:21:43 +10:00
parent dff99cf0fc
commit 83252650b1
1 changed files with 14 additions and 0 deletions

View File

@ -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