fix unsend bugs
This commit is contained in:
parent
e529e68cb2
commit
dbcc158337
|
@ -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) {
|
||||||
|
|
Loading…
Reference in New Issue