|
|
|
|
@ -118,7 +118,14 @@ public final class FriendRequestProtocol : NSObject {
|
|
|
|
|
if friendRequestStatus == .requestReceived {
|
|
|
|
|
storage.setFriendRequestStatus(.friends, for: device, transaction: transaction)
|
|
|
|
|
sendFriendRequestAcceptanceMessage(to: device, using: transaction)
|
|
|
|
|
} else if (friendRequestStatus == .none || friendRequestStatus == .requestExpired) && !ourDevices.contains(device) {
|
|
|
|
|
// Send a contact sync message if needed
|
|
|
|
|
guard !ourDevices.contains(hexEncodedPublicKey) else { return }
|
|
|
|
|
let masterHexEncodedPublicKey = storage.getMasterHexEncodedPublicKey(for: hexEncodedPublicKey, in: transaction) ?? hexEncodedPublicKey
|
|
|
|
|
let syncManager = SSKEnvironment.shared.syncManager
|
|
|
|
|
syncManager.syncContact(masterHexEncodedPublicKey, transaction: transaction)
|
|
|
|
|
} else if friendRequestStatus == .requestSent {
|
|
|
|
|
// 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 && !ourDevices.contains(device) {
|
|
|
|
|
// TODO: We should track these so that we can expire them and resend if needed
|
|
|
|
|
MultiDeviceProtocol.getAutoGeneratedMultiDeviceFRMessageSend(for: device, in: transaction)
|
|
|
|
|
.done(on: OWSDispatch.sendingQueue()) { autoGeneratedFRMessageSend in
|
|
|
|
|
@ -127,12 +134,6 @@ public final class FriendRequestProtocol : NSObject {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
// Send a contact sync message if we became friends with another user
|
|
|
|
|
if (!ourDevices.contains(hexEncodedPublicKey)) {
|
|
|
|
|
let masterHexEncodedPublicKey = storage.getMasterHexEncodedPublicKey(for: hexEncodedPublicKey, in: transaction) ?? hexEncodedPublicKey
|
|
|
|
|
let syncManager = SSKEnvironment.shared.syncManager
|
|
|
|
|
syncManager.syncContact(masterHexEncodedPublicKey, transaction: transaction)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@objc(sendFriendRequestAcceptanceMessageToHexEncodedPublicKey:using:)
|
|
|
|
|
@ -245,7 +246,8 @@ public final class FriendRequestProtocol : NSObject {
|
|
|
|
|
guard friendRequestStatus != .none else { return }
|
|
|
|
|
// Become friends
|
|
|
|
|
storage.setFriendRequestStatus(.friends, for: hexEncodedPublicKey, transaction: transaction)
|
|
|
|
|
// Send a contact sync message
|
|
|
|
|
// Send a contact sync message if needed
|
|
|
|
|
guard !LokiDatabaseUtilities.isUserLinkedDevice(hexEncodedPublicKey, transaction: transaction) else { return }
|
|
|
|
|
let masterHexEncodedPublicKey = storage.getMasterHexEncodedPublicKey(for: hexEncodedPublicKey, in: transaction) ?? hexEncodedPublicKey
|
|
|
|
|
let syncManager = SSKEnvironment.shared.syncManager
|
|
|
|
|
syncManager.syncContact(masterHexEncodedPublicKey, transaction: transaction)
|
|
|
|
|
|