check if the incoming message is already in database before persisting

pull/582/head
Ryan Zhao 4 years ago
parent c9b9104e8a
commit b920dbcc10

@ -42,6 +42,7 @@ extension Storage {
} }
tsMessage = tsOutgoingMessage tsMessage = tsOutgoingMessage
} else { } else {
if let _ = TSIncomingMessage.find(withAuthorId: message.sender!, timestamp: message.sentTimestamp!, transaction: transaction) { return nil }
tsMessage = TSIncomingMessage.from(message, quotedMessage: quotedMessage, linkPreview: linkPreview, associatedWith: thread) tsMessage = TSIncomingMessage.from(message, quotedMessage: quotedMessage, linkPreview: linkPreview, associatedWith: thread)
} }
tsMessage.save(with: transaction) tsMessage.save(with: transaction)

@ -365,7 +365,7 @@ extension MessageReceiver {
} }
// Persist the message // Persist the message
guard let tsMessageID = storage.persist(message, quotedMessage: tsQuotedMessage, linkPreview: owsLinkPreview, guard let tsMessageID = storage.persist(message, quotedMessage: tsQuotedMessage, linkPreview: owsLinkPreview,
groupPublicKey: message.groupPublicKey, openGroupID: openGroupID, using: transaction) else { throw Error.noThread } groupPublicKey: message.groupPublicKey, openGroupID: openGroupID, using: transaction) else { throw Error.duplicateMessage }
message.threadID = threadID message.threadID = threadID
// Start attachment downloads if needed // Start attachment downloads if needed
let isContactTrusted = Storage.shared.getContact(with: message.sender!)?.isTrusted ?? false let isContactTrusted = Storage.shared.getContact(with: message.sender!)?.isTrusted ?? false

Loading…
Cancel
Save