fix unsend bugs

This commit is contained in:
ryanzhao 2021-10-27 13:51:19 +11:00
parent e529e68cb2
commit dbcc158337
1 changed files with 15 additions and 9 deletions

View File

@ -231,12 +231,12 @@ extension MessageReceiver {
// MARK: - Unsend Requests // MARK: - Unsend Requests
public static func handleUnsendRequest(_ message: UnsendRequest, using transaction: Any) { public static func handleUnsendRequest(_ message: UnsendRequest, using transaction: Any) {
guard message.sender == message.author else { return }
let userPublicKey = getUserHexEncodedPublicKey() let userPublicKey = getUserHexEncodedPublicKey()
guard message.sender == message.author || userPublicKey == message.sender else { return }
let transaction = transaction as! YapDatabaseReadWriteTransaction let transaction = transaction as! YapDatabaseReadWriteTransaction
if let author = message.author, let timestamp = message.timestamp { if let author = message.author, let timestamp = message.timestamp {
let localMessage: TSMessage? let localMessage: TSMessage?
if userPublicKey == message.sender { if userPublicKey == author {
localMessage = TSOutgoingMessage.find(withTimestamp: timestamp) localMessage = TSOutgoingMessage.find(withTimestamp: timestamp)
} else { } else {
localMessage = TSIncomingMessage.find(withAuthorId: author, timestamp: timestamp, transaction: transaction) localMessage = TSIncomingMessage.find(withAuthorId: author, timestamp: timestamp, transaction: transaction)
@ -249,10 +249,14 @@ extension MessageReceiver {
UNUserNotificationCenter.current().removePendingNotificationRequests(withIdentifiers: [notificationIdentifier]) UNUserNotificationCenter.current().removePendingNotificationRequests(withIdentifiers: [notificationIdentifier])
} }
} }
if let serverHash = messageToDelete.serverHash { if author == message.sender {
SnodeAPI.deleteMessage(publicKey: author, serverHashes: [serverHash]).retainUntilComplete() if let serverHash = messageToDelete.serverHash {
SnodeAPI.deleteMessage(publicKey: author, serverHashes: [serverHash]).retainUntilComplete()
}
messageToDelete.updateForDeletion(with: transaction)
} else {
messageToDelete.remove(with: transaction)
} }
messageToDelete.updateForDeletion(with: transaction)
} }
} }
} }
@ -323,10 +327,12 @@ extension MessageReceiver {
if isMainAppAndActive { if isMainAppAndActive {
cancelTypingIndicatorsIfNeeded(for: message.sender!) cancelTypingIndicatorsIfNeeded(for: message.sender!)
} }
// Keep track of the open group server message ID message ID relationship if let tsMessage = TSMessage.fetch(uniqueId: tsMessageID, transaction: transaction) {
if let serverID = message.openGroupServerMessageID, let tsMessage = TSMessage.fetch(uniqueId: tsMessageID, transaction: transaction) { // Keep track of the open group server message ID message ID relationship
tsMessage.openGroupServerMessageID = serverID if let serverID = message.openGroupServerMessageID { tsMessage.openGroupServerMessageID = serverID }
tsMessage.save(with: transaction) // Keep track of server hash
if let serverHash = message.serverHash { tsMessage.serverHash = serverHash }
tsMessage.save(with: transaction)
} }
if let tsOutgoingMessage = TSMessage.fetch(uniqueId: tsMessageID, transaction: transaction) as? TSOutgoingMessage, if let tsOutgoingMessage = TSMessage.fetch(uniqueId: tsMessageID, transaction: transaction) as? TSOutgoingMessage,
let thread = TSThread.fetch(uniqueId: threadID, transaction: transaction) { let thread = TSThread.fetch(uniqueId: threadID, transaction: transaction) {