Don't send AFRs to self

pull/186/head
nielsandriesse 4 years ago
parent d845b089e9
commit 3b35535628

@ -125,7 +125,7 @@ public final class FriendRequestProtocol : NSObject {
syncManager.syncContact(masterHexEncodedPublicKey, transaction: transaction) syncManager.syncContact(masterHexEncodedPublicKey, transaction: transaction)
} else if friendRequestStatus == .requestSent { } else if friendRequestStatus == .requestSent {
// We sent a friend request to this device before, how can we be sure that it hasn't expired? // We sent a friend request to this device before, how can we be sure that it hasn't expired?
} else if friendRequestStatus == .none || friendRequestStatus == .requestExpired { } else if !userLinkedDevices.contains(device) && (friendRequestStatus == .none || friendRequestStatus == .requestExpired) {
// TODO: We should track these so that we can expire them and resend if needed // TODO: We should track these so that we can expire them and resend if needed
MultiDeviceProtocol.getAutoGeneratedMultiDeviceFRMessageSend(for: device, in: transaction) MultiDeviceProtocol.getAutoGeneratedMultiDeviceFRMessageSend(for: device, in: transaction)
.done(on: OWSDispatch.sendingQueue()) { autoGeneratedFRMessageSend in .done(on: OWSDispatch.sendingQueue()) { autoGeneratedFRMessageSend in

@ -73,7 +73,7 @@ public final class MultiDeviceProtocol : NSObject {
let messageSender = SSKEnvironment.shared.messageSender let messageSender = SSKEnvironment.shared.messageSender
let (promise, seal) = Promise<Void>.pending() let (promise, seal) = Promise<Void>.pending()
let shouldSendAutoGeneratedFR = !thread.isContactFriend && !(message is FriendRequestMessage) let shouldSendAutoGeneratedFR = !thread.isContactFriend && !(message is FriendRequestMessage)
&& message.shouldBeSaved() // shouldBeSaved indicates it isn't a transient message && !SessionMetaProtocol.isThreadNoteToSelf(thread) && message.shouldBeSaved() // shouldBeSaved indicates it isn't a transient message
if !shouldSendAutoGeneratedFR { if !shouldSendAutoGeneratedFR {
let messageSendCopy = copy(messageSend, for: destination, with: seal) let messageSendCopy = copy(messageSend, for: destination, with: seal)
messageSender.sendMessage(messageSendCopy) messageSender.sendMessage(messageSendCopy)

@ -165,8 +165,10 @@ public final class SyncMessagesProtocol : NSObject {
public static func handleContactSyncMessageData(_ data: Data, using transaction: YapDatabaseReadWriteTransaction) { public static func handleContactSyncMessageData(_ data: Data, using transaction: YapDatabaseReadWriteTransaction) {
let parser = ContactParser(data: data) let parser = ContactParser(data: data)
let hexEncodedPublicKeys = parser.parseHexEncodedPublicKeys() let hexEncodedPublicKeys = parser.parseHexEncodedPublicKeys()
let linkedDevices = LokiDatabaseUtilities.getLinkedDeviceHexEncodedPublicKeys(for: getUserHexEncodedPublicKey(), in: transaction)
// Try to establish sessions // Try to establish sessions
for hexEncodedPublicKey in hexEncodedPublicKeys { for hexEncodedPublicKey in hexEncodedPublicKeys {
guard !linkedDevices.contains(hexEncodedPublicKey) else { continue } // Skip self
// We don't update the friend request status; that's done in OWSMessageSender.sendMessage(_:) // We don't update the friend request status; that's done in OWSMessageSender.sendMessage(_:)
let friendRequestStatus = storage.getFriendRequestStatus(for: hexEncodedPublicKey, transaction: transaction) let friendRequestStatus = storage.getFriendRequestStatus(for: hexEncodedPublicKey, transaction: transaction)
switch friendRequestStatus { switch friendRequestStatus {

Loading…
Cancel
Save