Merge branch 'message-replication-fix' into voice-calls-2

This commit is contained in:
Ryan Zhao 2022-03-15 14:35:08 +11:00
commit 343a3afc0a
4 changed files with 6 additions and 4 deletions

View File

@ -28,7 +28,7 @@ extension Storage {
let thread = TSThread.fetch(uniqueId: threadID, transaction: transaction) else { return nil } let thread = TSThread.fetch(uniqueId: threadID, transaction: transaction) else { return nil }
let tsMessage: TSMessage let tsMessage: TSMessage
if message.sender == getUserPublicKey() { if message.sender == getUserPublicKey() {
if let _ = TSOutgoingMessage.find(withTimestamp: message.sentTimestamp!) { return nil } if TSOutgoingMessage.find(withTimestamp: message.sentTimestamp!) != nil { return nil }
let tsOutgoingMessage = TSOutgoingMessage.from(message, associatedWith: thread, using: transaction) let tsOutgoingMessage = TSOutgoingMessage.from(message, associatedWith: thread, using: transaction)
var recipients: [String] = [] var recipients: [String] = []
if let syncTarget = message.syncTarget { if let syncTarget = message.syncTarget {
@ -42,6 +42,7 @@ extension Storage {
} }
tsMessage = tsOutgoingMessage tsMessage = tsOutgoingMessage
} else { } else {
if TSIncomingMessage.find(withAuthorId: message.sender!, timestamp: message.sentTimestamp!, transaction: transaction) != nil { 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)

View File

@ -34,7 +34,7 @@ public final class OpenGroupManagerV2 : NSObject {
let transaction = transaction as! YapDatabaseReadWriteTransaction let transaction = transaction as! YapDatabaseReadWriteTransaction
let groupId: Data = LKGroupUtilities.getEncodedOpenGroupIDAsData("\(server).\(room)") let groupId: Data = LKGroupUtilities.getEncodedOpenGroupIDAsData("\(server).\(room)")
if OpenGroupManagerV2.shared.pollers[server] != nil && TSGroupThread.fetch(uniqueId: TSGroupThread.threadId(fromGroupId: groupId), transaction: transaction) != nil { if OpenGroupManagerV2.shared.pollers[server] != nil && TSGroupThread.fetch(groupId: groupId, transaction: transaction) != nil {
SNLog("Ignoring join open group attempt (already joined)") SNLog("Ignoring join open group attempt (already joined)")
return Promise.value(()) return Promise.value(())
} }

View File

@ -407,7 +407,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

View File

@ -30,7 +30,8 @@ extern NSString *const TSGroupThread_NotificationKey_UniqueId;
groupType:(GroupType) groupType groupType:(GroupType) groupType
transaction:(YapDatabaseReadWriteTransaction *)transaction; transaction:(YapDatabaseReadWriteTransaction *)transaction;
+ (nullable instancetype)threadWithGroupId:(NSData *)groupId transaction:(YapDatabaseReadTransaction *)transaction; + (nullable instancetype)threadWithGroupId:(NSData *)groupId transaction:(YapDatabaseReadTransaction *)transaction
NS_SWIFT_NAME(fetch(groupId:transaction:));
+ (NSString *)threadIdFromGroupId:(NSData *)groupId; + (NSString *)threadIdFromGroupId:(NSData *)groupId;