Rename function.

pull/175/head
Mikunj 5 years ago
parent 7caed4f0e5
commit d63a11b702

@ -192,7 +192,7 @@ final class DeviceLinkingModal : Modal, DeviceLinkingSessionDelegate {
let _ = SSKEnvironment.shared.syncManager.syncAllOpenGroups() let _ = SSKEnvironment.shared.syncManager.syncAllOpenGroups()
let storage = OWSPrimaryStorage.shared() let storage = OWSPrimaryStorage.shared()
storage.dbReadWriteConnection.readWrite { transaction in storage.dbReadWriteConnection.readWrite { transaction in
storage.setFriendRequestStatus(.friends, forContact: hexEncodedPublicKey, transaction: transaction) storage.setFriendRequestStatus(.friends, for: hexEncodedPublicKey, transaction: transaction)
} }
DispatchQueue.main.async { DispatchQueue.main.async {
self?.dismiss(animated: true, completion: nil) self?.dismiss(animated: true, completion: nil)

@ -62,9 +62,8 @@ typedef NS_ENUM(NSInteger, LKFriendRequestStatus) {
# pragma mark - Friend Request # pragma mark - Friend Request
- (LKFriendRequestStatus)getFriendRequestStatusForContact:(NSString *)hexEncodedPublicKey transaction:(YapDatabaseReadTransaction *)transaction; - (LKFriendRequestStatus)getFriendRequestStatusForContact:(NSString *)hexEncodedPublicKey transaction:(YapDatabaseReadTransaction *)transaction NS_SWIFT_NAME(getFriendRequestStatus(for:transaction:));
NS_SWIFT_NAME(getFriendRequestStatus(forContact:in:)); - (void)setFriendRequestStatus:(LKFriendRequestStatus)friendRequestStatus forContact:(NSString *)hexEncodedPublicKey transaction:(YapDatabaseReadWriteTransaction *)transaction NS_SWIFT_NAME(setFriendRequestStatus(_:for:transaction:));
- (void)setFriendRequestStatus:(LKFriendRequestStatus)friendRequestStatus forContact:(NSString *)hexEncodedPublicKey transaction:(YapDatabaseReadWriteTransaction *)transaction;
@end @end

@ -32,7 +32,7 @@ public final class FriendRequestProtocol : NSObject {
storage.dbReadConnection.read { transaction in storage.dbReadConnection.read { transaction in
let linkedDeviceThreads = LokiDatabaseUtilities.getLinkedDeviceThreads(for: contactID, in: transaction) let linkedDeviceThreads = LokiDatabaseUtilities.getLinkedDeviceThreads(for: contactID, in: transaction)
friendRequestStatuses = linkedDeviceThreads.map { device in friendRequestStatuses = linkedDeviceThreads.map { device in
return storage.getFriendRequestStatus(forContact: device.contactIdentifier(), transaction: transaction) return storage.getFriendRequestStatus(for: device.contactIdentifier(), transaction: transaction)
} }
} }
// If the current user is friends with any of the other user's devices, the input bar should be enabled // If the current user is friends with any of the other user's devices, the input bar should be enabled
@ -54,7 +54,7 @@ public final class FriendRequestProtocol : NSObject {
storage.dbReadConnection.read { transaction in storage.dbReadConnection.read { transaction in
let linkedDeviceThreads = LokiDatabaseUtilities.getLinkedDeviceThreads(for: contactID, in: transaction) let linkedDeviceThreads = LokiDatabaseUtilities.getLinkedDeviceThreads(for: contactID, in: transaction)
friendRequestStatuses = linkedDeviceThreads.map { thread in friendRequestStatuses = linkedDeviceThreads.map { thread in
storage.getFriendRequestStatus(forContact: thread.contactIdentifier(), transaction: transaction) storage.getFriendRequestStatus(for: thread.contactIdentifier(), transaction: transaction)
} }
} }
// If the current user is friends with any of the other user's devices, the attachment button should be enabled // If the current user is friends with any of the other user's devices, the attachment button should be enabled
@ -75,9 +75,9 @@ public final class FriendRequestProtocol : NSObject {
let linkedDevices = LokiDatabaseUtilities.getLinkedDeviceHexEncodedPublicKeys(for: hexEncodedPublicKey, in: transaction) let linkedDevices = LokiDatabaseUtilities.getLinkedDeviceHexEncodedPublicKeys(for: hexEncodedPublicKey, in: transaction)
for device in linkedDevices { for device in linkedDevices {
let friendRequestStatus = storage.getFriendRequestStatus(forContact: device, transaction: transaction) let friendRequestStatus = storage.getFriendRequestStatus(for: device, transaction: transaction)
if friendRequestStatus == .requestReceived { if friendRequestStatus == .requestReceived {
storage.setFriendRequestStatus(.friends, forContact: device, transaction: transaction) storage.setFriendRequestStatus(.friends, for: device, transaction: transaction)
sendFriendRequestAcceptanceMessage(to: device, using: transaction) sendFriendRequestAcceptanceMessage(to: device, using: 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?
@ -119,14 +119,14 @@ public final class FriendRequestProtocol : NSObject {
let linkedDevices = LokiDatabaseUtilities.getLinkedDeviceHexEncodedPublicKeys(for: hexEncodedPublicKey, in: transaction) let linkedDevices = LokiDatabaseUtilities.getLinkedDeviceHexEncodedPublicKeys(for: hexEncodedPublicKey, in: transaction)
for device in linkedDevices { for device in linkedDevices {
let friendRequestStatus = storage.getFriendRequestStatus(forContact: device, transaction: transaction) let friendRequestStatus = storage.getFriendRequestStatus(for: device, transaction: transaction)
assert(friendRequestStatus != .friends, "Invalid state transition. Cannot decline a friend request from a device we're already friends with. hexEncodedPublicKey: \(device)") assert(friendRequestStatus != .friends, "Invalid state transition. Cannot decline a friend request from a device we're already friends with. hexEncodedPublicKey: \(device)")
// We only want to decline any incoming requests // We only want to decline any incoming requests
if (friendRequestStatus == .requestReceived) { if (friendRequestStatus == .requestReceived) {
// Delete the pre key bundle for the given contact. This ensures that if we send a // Delete the pre key bundle for the given contact. This ensures that if we send a
// new message after this, it restarts the friend request process from scratch. // new message after this, it restarts the friend request process from scratch.
storage.removePreKeyBundle(forContact: device, transaction: transaction) storage.removePreKeyBundle(forContact: device, transaction: transaction)
storage.setFriendRequestStatus(.none, forContact: device, transaction: transaction) storage.setFriendRequestStatus(.none, for: device, transaction: transaction)
} }
} }
} }
@ -141,7 +141,7 @@ public final class FriendRequestProtocol : NSObject {
@objc(canFriendRequestBeAutoAcceptedForHexEncodedPublicKey:using:) @objc(canFriendRequestBeAutoAcceptedForHexEncodedPublicKey:using:)
public static func canFriendRequestBeAutoAccepted(for hexEncodedPublicKey: String, using transaction: YapDatabaseReadTransaction) -> Bool { public static func canFriendRequestBeAutoAccepted(for hexEncodedPublicKey: String, using transaction: YapDatabaseReadTransaction) -> Bool {
if storage.getFriendRequestStatus(forContact: hexEncodedPublicKey, transaction: transaction) == .requestSent { if storage.getFriendRequestStatus(for: hexEncodedPublicKey, transaction: transaction) == .requestSent {
// This can happen if Alice sent Bob a friend request, Bob declined, but then Bob changed his // This can happen if Alice sent Bob a friend request, Bob declined, but then Bob changed his
// mind and sent a friend request to Alice. In this case we want Alice to auto-accept the request // mind and sent a friend request to Alice. In this case we want Alice to auto-accept the request
// and send a friend request accepted message back to Bob. We don't check that sending the // and send a friend request accepted message back to Bob. We don't check that sending the
@ -159,7 +159,7 @@ public final class FriendRequestProtocol : NSObject {
if userLinkedDeviceHexEncodedPublicKeys.contains(hexEncodedPublicKey) { return true } if userLinkedDeviceHexEncodedPublicKeys.contains(hexEncodedPublicKey) { return true }
// Auto-accept if the user is friends with any of the sender's linked devices. // Auto-accept if the user is friends with any of the sender's linked devices.
let senderLinkedDevices = LokiDatabaseUtilities.getLinkedDeviceHexEncodedPublicKeys(for: hexEncodedPublicKey, in: transaction) let senderLinkedDevices = LokiDatabaseUtilities.getLinkedDeviceHexEncodedPublicKeys(for: hexEncodedPublicKey, in: transaction)
if senderLinkedDevices.contains(where: { storage.getFriendRequestStatus(forContact: $0, transaction: transaction) == .friends }) { if senderLinkedDevices.contains(where: { storage.getFriendRequestStatus(for: $0, transaction: transaction) == .friends }) {
return true return true
} }
// We can't auto-accept // We can't auto-accept
@ -175,11 +175,11 @@ public final class FriendRequestProtocol : NSObject {
// If we get an envelope that isn't a friend request, then we can infer that we had to use // If we get an envelope that isn't a friend request, then we can infer that we had to use
// Signal cipher decryption and thus that we have a session with the other person. // Signal cipher decryption and thus that we have a session with the other person.
let thread = TSContactThread.getOrCreateThread(withContactId: hexEncodedPublicKey, transaction: transaction) let thread = TSContactThread.getOrCreateThread(withContactId: hexEncodedPublicKey, transaction: transaction)
let friendRequestStatus = storage.getFriendRequestStatus(forContact: hexEncodedPublicKey, transaction: transaction); let friendRequestStatus = storage.getFriendRequestStatus(for: hexEncodedPublicKey, transaction: transaction);
// We shouldn't be able to skip from none to friends // We shouldn't be able to skip from none to friends
guard friendRequestStatus != .none else { return } guard friendRequestStatus != .none else { return }
// Become friends // Become friends
storage.setFriendRequestStatus(.friends, forContact: hexEncodedPublicKey, transaction: transaction) storage.setFriendRequestStatus(.friends, for: hexEncodedPublicKey, transaction: transaction)
if let existingFriendRequestMessage = thread.getLastInteraction(with: transaction) as? TSOutgoingMessage, if let existingFriendRequestMessage = thread.getLastInteraction(with: transaction) as? TSOutgoingMessage,
existingFriendRequestMessage.isFriendRequest { existingFriendRequestMessage.isFriendRequest {
existingFriendRequestMessage.saveFriendRequestStatus(.accepted, with: transaction) existingFriendRequestMessage.saveFriendRequestStatus(.accepted, with: transaction)
@ -207,7 +207,7 @@ public final class FriendRequestProtocol : NSObject {
return return
} }
if canFriendRequestBeAutoAccepted(for: hexEncodedPublicKey, using: transaction) { if canFriendRequestBeAutoAccepted(for: hexEncodedPublicKey, using: transaction) {
storage.setFriendRequestStatus(.friends, forContact: hexEncodedPublicKey, transaction: transaction) storage.setFriendRequestStatus(.friends, for: hexEncodedPublicKey, transaction: transaction)
var existingFriendRequestMessage: TSOutgoingMessage? var existingFriendRequestMessage: TSOutgoingMessage?
thread.enumerateInteractions(with: transaction) { interaction, _ in thread.enumerateInteractions(with: transaction) { interaction, _ in
if let outgoingMessage = interaction as? TSOutgoingMessage, outgoingMessage.isFriendRequest { if let outgoingMessage = interaction as? TSOutgoingMessage, outgoingMessage.isFriendRequest {
@ -218,13 +218,13 @@ public final class FriendRequestProtocol : NSObject {
existingFriendRequestMessage.saveFriendRequestStatus(.accepted, with: transaction) existingFriendRequestMessage.saveFriendRequestStatus(.accepted, with: transaction)
} }
sendFriendRequestAcceptanceMessage(to: hexEncodedPublicKey, using: transaction) sendFriendRequestAcceptanceMessage(to: hexEncodedPublicKey, using: transaction)
} else if storage.getFriendRequestStatus(forContact: hexEncodedPublicKey, transaction: transaction) != .friends { } else if storage.getFriendRequestStatus(for: hexEncodedPublicKey, transaction: transaction) != .friends {
// Checking that the sender of the message isn't already a friend is necessary because otherwise // Checking that the sender of the message isn't already a friend is necessary because otherwise
// the following situation can occur: Alice and Bob are friends. Bob loses his database and his // the following situation can occur: Alice and Bob are friends. Bob loses his database and his
// friend request status is reset to LKThreadFriendRequestStatusNone. Bob now sends Alice a friend // friend request status is reset to LKThreadFriendRequestStatusNone. Bob now sends Alice a friend
// request. Alice's thread's friend request status is reset to // request. Alice's thread's friend request status is reset to
// LKThreadFriendRequestStatusRequestReceived. // LKThreadFriendRequestStatusRequestReceived.
storage.setFriendRequestStatus(.requestReceived, forContact: hexEncodedPublicKey, transaction: transaction) storage.setFriendRequestStatus(.requestReceived, for: hexEncodedPublicKey, transaction: transaction)
// Except for the message.friendRequestStatus = LKMessageFriendRequestStatusPending line below, all of this is to ensure that // Except for the message.friendRequestStatus = LKMessageFriendRequestStatusPending line below, all of this is to ensure that
// there's only ever one message with status LKMessageFriendRequestStatusPending in a thread (where a thread is the combination // there's only ever one message with status LKMessageFriendRequestStatusPending in a thread (where a thread is the combination
// of all threads belonging to the linked devices of a user). // of all threads belonging to the linked devices of a user).

@ -27,7 +27,7 @@ class FriendRequestProtocolTests : XCTestCase {
// MARK: - Helpers // MARK: - Helpers
func isFriendRequestStatus(_ values: [LKFriendRequestStatus], for hexEncodedPublicKey: String, transaction: YapDatabaseReadWriteTransaction) -> Bool { func isFriendRequestStatus(_ values: [LKFriendRequestStatus], for hexEncodedPublicKey: String, transaction: YapDatabaseReadWriteTransaction) -> Bool {
let status = storage.getFriendRequestStatus(forContact: hexEncodedPublicKey, transaction: transaction) let status = storage.getFriendRequestStatus(for: hexEncodedPublicKey, transaction: transaction)
return values.contains(status) return values.contains(status)
} }
@ -91,8 +91,8 @@ class FriendRequestProtocolTests : XCTestCase {
let deviceLink = DeviceLink(between: masterDevice, and: slaveDevice) let deviceLink = DeviceLink(between: masterDevice, and: slaveDevice)
storage.dbReadWriteConnection.readWrite { transaction in storage.dbReadWriteConnection.readWrite { transaction in
self.storage.addDeviceLink(deviceLink, in: transaction) self.storage.addDeviceLink(deviceLink, in: transaction)
self.storage.setFriendRequestStatus(.requestSent, forContact: master, transaction: transaction) self.storage.setFriendRequestStatus(.requestSent, for: master, transaction: transaction)
self.storage.setFriendRequestStatus(.requestSent, forContact: slave, transaction: transaction) self.storage.setFriendRequestStatus(.requestSent, for: slave, transaction: transaction)
} }
let masterThread = createContactThread(for: master) let masterThread = createContactThread(for: master)
@ -109,7 +109,7 @@ class FriendRequestProtocolTests : XCTestCase {
for status in validStatuses { for status in validStatuses {
storage.dbReadWriteConnection.readWrite { transaction in storage.dbReadWriteConnection.readWrite { transaction in
self.storage.setFriendRequestStatus(status, forContact: device, transaction: transaction) self.storage.setFriendRequestStatus(status, for: device, transaction: transaction)
} }
XCTAssertTrue(FriendRequestProtocol.shouldInputBarBeEnabled(for: thread)) XCTAssertTrue(FriendRequestProtocol.shouldInputBarBeEnabled(for: thread))
} }
@ -122,7 +122,7 @@ class FriendRequestProtocolTests : XCTestCase {
for status in pendingStatuses { for status in pendingStatuses {
storage.dbReadWriteConnection.readWrite { transaction in storage.dbReadWriteConnection.readWrite { transaction in
self.storage.setFriendRequestStatus(status, forContact: device, transaction: transaction) self.storage.setFriendRequestStatus(status, for: device, transaction: transaction)
} }
XCTAssertFalse(FriendRequestProtocol.shouldInputBarBeEnabled(for: thread)) XCTAssertFalse(FriendRequestProtocol.shouldInputBarBeEnabled(for: thread))
} }
@ -138,8 +138,8 @@ class FriendRequestProtocolTests : XCTestCase {
let deviceLink = DeviceLink(between: masterDevice, and: slaveDevice) let deviceLink = DeviceLink(between: masterDevice, and: slaveDevice)
storage.dbReadWriteConnection.readWrite { transaction in storage.dbReadWriteConnection.readWrite { transaction in
self.storage.addDeviceLink(deviceLink, in: transaction) self.storage.addDeviceLink(deviceLink, in: transaction)
self.storage.setFriendRequestStatus(.friends, forContact: master, transaction: transaction) self.storage.setFriendRequestStatus(.friends, for: master, transaction: transaction)
self.storage.setFriendRequestStatus(.requestSent, forContact: slave, transaction: transaction) self.storage.setFriendRequestStatus(.requestSent, for: slave, transaction: transaction)
} }
let masterThread = createContactThread(for: master) let masterThread = createContactThread(for: master)
@ -159,7 +159,7 @@ class FriendRequestProtocolTests : XCTestCase {
let deviceLink = DeviceLink(between: masterDevice, and: slaveDevice) let deviceLink = DeviceLink(between: masterDevice, and: slaveDevice)
storage.dbReadWriteConnection.readWrite { transaction in storage.dbReadWriteConnection.readWrite { transaction in
self.storage.addDeviceLink(deviceLink, in: transaction) self.storage.addDeviceLink(deviceLink, in: transaction)
self.storage.setFriendRequestStatus(.none, forContact: master, transaction: transaction) self.storage.setFriendRequestStatus(.none, for: master, transaction: transaction)
} }
let masterThread = createContactThread(for: master) let masterThread = createContactThread(for: master)
@ -168,7 +168,7 @@ class FriendRequestProtocolTests : XCTestCase {
let pendingStatuses: [LKFriendRequestStatus] = [.requestSending, .requestSent, .requestReceived] let pendingStatuses: [LKFriendRequestStatus] = [.requestSending, .requestSent, .requestReceived]
for status in pendingStatuses { for status in pendingStatuses {
storage.dbReadWriteConnection.readWrite { transaction in storage.dbReadWriteConnection.readWrite { transaction in
self.storage.setFriendRequestStatus(status, forContact: slave, transaction: transaction) self.storage.setFriendRequestStatus(status, for: slave, transaction: transaction)
} }
XCTAssertFalse(FriendRequestProtocol.shouldInputBarBeEnabled(for: masterThread)) XCTAssertFalse(FriendRequestProtocol.shouldInputBarBeEnabled(for: masterThread))
XCTAssertFalse(FriendRequestProtocol.shouldInputBarBeEnabled(for: slaveThread)) XCTAssertFalse(FriendRequestProtocol.shouldInputBarBeEnabled(for: slaveThread))
@ -185,8 +185,8 @@ class FriendRequestProtocolTests : XCTestCase {
let deviceLink = DeviceLink(between: masterDevice, and: slaveDevice) let deviceLink = DeviceLink(between: masterDevice, and: slaveDevice)
storage.dbReadWriteConnection.readWrite { transaction in storage.dbReadWriteConnection.readWrite { transaction in
self.storage.addDeviceLink(deviceLink, in: transaction) self.storage.addDeviceLink(deviceLink, in: transaction)
self.storage.setFriendRequestStatus(.none, forContact: master, transaction: transaction) self.storage.setFriendRequestStatus(.none, for: master, transaction: transaction)
self.storage.setFriendRequestStatus(.none, forContact: slave, transaction: transaction) self.storage.setFriendRequestStatus(.none, for: slave, transaction: transaction)
} }
let masterThread = createContactThread(for: master) let masterThread = createContactThread(for: master)
@ -195,7 +195,7 @@ class FriendRequestProtocolTests : XCTestCase {
let safeStatuses: [LKFriendRequestStatus] = [.requestExpired, .none] let safeStatuses: [LKFriendRequestStatus] = [.requestExpired, .none]
for status in safeStatuses { for status in safeStatuses {
storage.dbReadWriteConnection.readWrite { transaction in storage.dbReadWriteConnection.readWrite { transaction in
self.storage.setFriendRequestStatus(status, forContact: slave, transaction: transaction) self.storage.setFriendRequestStatus(status, for: slave, transaction: transaction)
} }
XCTAssertTrue(FriendRequestProtocol.shouldInputBarBeEnabled(for: masterThread)) XCTAssertTrue(FriendRequestProtocol.shouldInputBarBeEnabled(for: masterThread))
XCTAssertTrue(FriendRequestProtocol.shouldInputBarBeEnabled(for: slaveThread)) XCTAssertTrue(FriendRequestProtocol.shouldInputBarBeEnabled(for: slaveThread))
@ -222,8 +222,8 @@ class FriendRequestProtocolTests : XCTestCase {
let deviceLink = DeviceLink(between: masterDevice, and: slaveDevice) let deviceLink = DeviceLink(between: masterDevice, and: slaveDevice)
storage.dbReadWriteConnection.readWrite { transaction in storage.dbReadWriteConnection.readWrite { transaction in
self.storage.addDeviceLink(deviceLink, in: transaction) self.storage.addDeviceLink(deviceLink, in: transaction)
self.storage.setFriendRequestStatus(.requestSent, forContact: master, transaction: transaction) self.storage.setFriendRequestStatus(.requestSent, for: master, transaction: transaction)
self.storage.setFriendRequestStatus(.requestSent, forContact: slave, transaction: transaction) self.storage.setFriendRequestStatus(.requestSent, for: slave, transaction: transaction)
} }
let masterThread = createContactThread(for: master) let masterThread = createContactThread(for: master)
@ -238,7 +238,7 @@ class FriendRequestProtocolTests : XCTestCase {
let thread = createContactThread(for: device) let thread = createContactThread(for: device)
storage.dbReadWriteConnection.readWrite { transaction in storage.dbReadWriteConnection.readWrite { transaction in
self.storage.setFriendRequestStatus(.friends, forContact: device, transaction: transaction) self.storage.setFriendRequestStatus(.friends, for: device, transaction: transaction)
} }
XCTAssertTrue(FriendRequestProtocol.shouldAttachmentButtonBeEnabled(for: thread)) XCTAssertTrue(FriendRequestProtocol.shouldAttachmentButtonBeEnabled(for: thread))
} }
@ -250,7 +250,7 @@ class FriendRequestProtocolTests : XCTestCase {
for status in nonFriendStatuses { for status in nonFriendStatuses {
storage.dbReadWriteConnection.readWrite { transaction in storage.dbReadWriteConnection.readWrite { transaction in
self.storage.setFriendRequestStatus(status, forContact: device, transaction: transaction) self.storage.setFriendRequestStatus(status, for: device, transaction: transaction)
} }
XCTAssertFalse(FriendRequestProtocol.shouldAttachmentButtonBeEnabled(for: thread)) XCTAssertFalse(FriendRequestProtocol.shouldAttachmentButtonBeEnabled(for: thread))
} }
@ -266,8 +266,8 @@ class FriendRequestProtocolTests : XCTestCase {
let deviceLink = DeviceLink(between: masterDevice, and: slaveDevice) let deviceLink = DeviceLink(between: masterDevice, and: slaveDevice)
storage.dbReadWriteConnection.readWrite { transaction in storage.dbReadWriteConnection.readWrite { transaction in
self.storage.addDeviceLink(deviceLink, in: transaction) self.storage.addDeviceLink(deviceLink, in: transaction)
self.storage.setFriendRequestStatus(.friends, forContact: master, transaction: transaction) self.storage.setFriendRequestStatus(.friends, for: master, transaction: transaction)
self.storage.setFriendRequestStatus(.requestSent, forContact: slave, transaction: transaction) self.storage.setFriendRequestStatus(.requestSent, for: slave, transaction: transaction)
} }
let masterThread = createContactThread(for: master) let masterThread = createContactThread(for: master)
@ -283,13 +283,13 @@ class FriendRequestProtocolTests : XCTestCase {
// Case: Bob sent us a friend request, we should become friends with him on accepting // Case: Bob sent us a friend request, we should become friends with him on accepting
let bob = Curve25519.generateKeyPair().hexEncodedPublicKey let bob = Curve25519.generateKeyPair().hexEncodedPublicKey
storage.dbReadWriteConnection.readWrite { transaction in storage.dbReadWriteConnection.readWrite { transaction in
self.storage.setFriendRequestStatus(.requestReceived, forContact: bob, transaction: transaction) self.storage.setFriendRequestStatus(.requestReceived, for: bob, transaction: transaction)
} }
storage.dbReadWriteConnection.readWrite { transaction in storage.dbReadWriteConnection.readWrite { transaction in
FriendRequestProtocol.acceptFriendRequest(from: bob, using: transaction) FriendRequestProtocol.acceptFriendRequest(from: bob, using: transaction)
XCTAssertTrue(self.storage.getFriendRequestStatus(forContact: bob, transaction: transaction) == .friends) XCTAssertTrue(self.storage.getFriendRequestStatus(for: bob, transaction: transaction) == .friends)
} }
} }
@ -300,7 +300,7 @@ class FriendRequestProtocolTests : XCTestCase {
for status in statuses { for status in statuses {
let bob = Curve25519.generateKeyPair().hexEncodedPublicKey let bob = Curve25519.generateKeyPair().hexEncodedPublicKey
storage.dbReadWriteConnection.readWrite { transaction in storage.dbReadWriteConnection.readWrite { transaction in
self.storage.setFriendRequestStatus(status, forContact: bob, transaction: transaction) self.storage.setFriendRequestStatus(status, for: bob, transaction: transaction)
} }
storage.dbReadWriteConnection.readWrite { transaction in storage.dbReadWriteConnection.readWrite { transaction in
@ -315,7 +315,7 @@ class FriendRequestProtocolTests : XCTestCase {
// We can't accept because we don't have keys to communicate with Bob. // We can't accept because we don't have keys to communicate with Bob.
let bob = Curve25519.generateKeyPair().hexEncodedPublicKey let bob = Curve25519.generateKeyPair().hexEncodedPublicKey
storage.dbReadWriteConnection.readWrite { transaction in storage.dbReadWriteConnection.readWrite { transaction in
self.storage.setFriendRequestStatus(.requestSent, forContact: bob, transaction: transaction) self.storage.setFriendRequestStatus(.requestSent, for: bob, transaction: transaction)
} }
@ -340,9 +340,9 @@ class FriendRequestProtocolTests : XCTestCase {
storage.dbReadWriteConnection.readWrite { transaction in storage.dbReadWriteConnection.readWrite { transaction in
self.storage.addDeviceLink(DeviceLink(between: masterDevice, and: slaveDevice), in: transaction) self.storage.addDeviceLink(DeviceLink(between: masterDevice, and: slaveDevice), in: transaction)
self.storage.addDeviceLink(DeviceLink(between: masterDevice, and: otherSlaveDevice), in: transaction) self.storage.addDeviceLink(DeviceLink(between: masterDevice, and: otherSlaveDevice), in: transaction)
self.storage.setFriendRequestStatus(.none, forContact: master, transaction: transaction) self.storage.setFriendRequestStatus(.none, for: master, transaction: transaction)
self.storage.setFriendRequestStatus(.requestReceived, forContact: slave, transaction: transaction) self.storage.setFriendRequestStatus(.requestReceived, for: slave, transaction: transaction)
self.storage.setFriendRequestStatus(.requestSent, forContact: otherSlave, transaction: transaction) self.storage.setFriendRequestStatus(.requestSent, for: otherSlave, transaction: transaction)
} }
storage.dbReadWriteConnection.readWrite { transaction in storage.dbReadWriteConnection.readWrite { transaction in
@ -358,8 +358,8 @@ class FriendRequestProtocolTests : XCTestCase {
let bob = generateHexEncodedPublicKey() let bob = generateHexEncodedPublicKey()
storage.dbReadWriteConnection.readWrite { transaction in storage.dbReadWriteConnection.readWrite { transaction in
self.storage.setFriendRequestStatus(.requestReceived, forContact: alice, transaction: transaction) self.storage.setFriendRequestStatus(.requestReceived, for: alice, transaction: transaction)
self.storage.setFriendRequestStatus(.requestReceived, forContact: bob, transaction: transaction) self.storage.setFriendRequestStatus(.requestReceived, for: bob, transaction: transaction)
} }
storage.dbReadWriteConnection.readWrite { transaction in storage.dbReadWriteConnection.readWrite { transaction in

@ -131,27 +131,27 @@ public final class MultiDeviceProtocol : NSObject {
recipientUDAccess = udManager.udAccess(forRecipientId: hexEncodedPublicKey, requireSyncAccess: true) recipientUDAccess = udManager.udAccess(forRecipientId: hexEncodedPublicKey, requireSyncAccess: true)
} }
let friendRequestStatus = storage.getFriendRequestStatus(forContact: hexEncodedPublicKey, transaction: transaction) let friendRequestStatus = storage.getFriendRequestStatus(for: hexEncodedPublicKey, transaction: transaction)
if (friendRequestStatus == .none || friendRequestStatus == .requestExpired) { if (friendRequestStatus == .none || friendRequestStatus == .requestExpired) {
storage.setFriendRequestStatus(.requestSending, forContact: hexEncodedPublicKey, transaction: transaction) storage.setFriendRequestStatus(.requestSending, for: hexEncodedPublicKey, transaction: transaction)
} }
return OWSMessageSend(message: message, thread: thread, recipient: recipient, senderCertificate: senderCertificate, return OWSMessageSend(message: message, thread: thread, recipient: recipient, senderCertificate: senderCertificate,
udAccess: recipientUDAccess, localNumber: getUserHexEncodedPublicKey(), success: { udAccess: recipientUDAccess, localNumber: getUserHexEncodedPublicKey(), success: {
DispatchQueue.main.async { DispatchQueue.main.async {
storage.dbReadWriteConnection.readWrite { transaction in storage.dbReadWriteConnection.readWrite { transaction in
let friendRequestStatus = storage.getFriendRequestStatus(forContact: hexEncodedPublicKey, transaction: transaction) let friendRequestStatus = storage.getFriendRequestStatus(for: hexEncodedPublicKey, transaction: transaction)
if (friendRequestStatus != .friends || friendRequestStatus != .requestReceived || friendRequestStatus != .requestSent) { if (friendRequestStatus != .friends || friendRequestStatus != .requestReceived || friendRequestStatus != .requestSent) {
storage.setFriendRequestStatus(.requestSent, forContact: hexEncodedPublicKey, transaction: transaction) storage.setFriendRequestStatus(.requestSent, for: hexEncodedPublicKey, transaction: transaction)
} }
} }
} }
}, failure: { _ in }, failure: { _ in
DispatchQueue.main.async { DispatchQueue.main.async {
storage.dbReadWriteConnection.readWrite { transaction in storage.dbReadWriteConnection.readWrite { transaction in
let friendRequestStatus = storage.getFriendRequestStatus(forContact: hexEncodedPublicKey, transaction: transaction) let friendRequestStatus = storage.getFriendRequestStatus(for: hexEncodedPublicKey, transaction: transaction)
if (friendRequestStatus != .friends || friendRequestStatus != .requestReceived || friendRequestStatus != .requestSent) { if (friendRequestStatus != .friends || friendRequestStatus != .requestReceived || friendRequestStatus != .requestSent) {
storage.setFriendRequestStatus(.none, forContact: hexEncodedPublicKey, transaction: transaction) storage.setFriendRequestStatus(.none, for: hexEncodedPublicKey, transaction: transaction)
} }
} }
} }

@ -122,7 +122,7 @@ public final class SessionProtocol : NSObject {
var shouldSendReceipt = false; var shouldSendReceipt = false;
storage.dbReadConnection.read { transaction in storage.dbReadConnection.read { transaction in
shouldSendReceipt = storage.getFriendRequestStatus(forContact: contact, transaction: transaction) == .friends shouldSendReceipt = storage.getFriendRequestStatus(for: contact, transaction: transaction) == .friends
} }
return shouldSendReceipt return shouldSendReceipt

@ -168,7 +168,7 @@ public final class SyncMessagesProtocol : NSObject {
// Try to establish sessions // Try to establish sessions
for hexEncodedPublicKey in hexEncodedPublicKeys { for hexEncodedPublicKey in hexEncodedPublicKeys {
let thread = TSContactThread.getOrCreateThread(withContactId: hexEncodedPublicKey, transaction: transaction) let thread = TSContactThread.getOrCreateThread(withContactId: hexEncodedPublicKey, transaction: transaction)
let friendRequestStatus = storage.getFriendRequestStatus(forContact: hexEncodedPublicKey, transaction: transaction) let friendRequestStatus = storage.getFriendRequestStatus(for: hexEncodedPublicKey, transaction: transaction)
switch friendRequestStatus { switch friendRequestStatus {
case .none, .requestExpired: case .none, .requestExpired:
let messageSender = SSKEnvironment.shared.messageSender let messageSender = SSKEnvironment.shared.messageSender
@ -178,7 +178,7 @@ public final class SyncMessagesProtocol : NSObject {
thread.isForceHidden = true thread.isForceHidden = true
thread.save(with: transaction) thread.save(with: transaction)
storage.setFriendRequestStatus(.requestSending, forContact: hexEncodedPublicKey, transaction: transaction) storage.setFriendRequestStatus(.requestSending, for: hexEncodedPublicKey, transaction: transaction)
// This takes into account multi device // This takes into account multi device
messageSender.send(autoGeneratedFRMessage, success: { messageSender.send(autoGeneratedFRMessage, success: {
@ -187,13 +187,13 @@ public final class SyncMessagesProtocol : NSObject {
autoGeneratedFRMessage.remove(with: transaction) autoGeneratedFRMessage.remove(with: transaction)
thread.isForceHidden = false thread.isForceHidden = false
thread.save(with: transaction) thread.save(with: transaction)
storage.setFriendRequestStatus(.requestSent, forContact: hexEncodedPublicKey, transaction: transaction) storage.setFriendRequestStatus(.requestSent, for: hexEncodedPublicKey, transaction: transaction)
} }
} }
}, failure: { error in }, failure: { error in
DispatchQueue.main.async { DispatchQueue.main.async {
storage.dbReadWriteConnection.readWrite { transaction in storage.dbReadWriteConnection.readWrite { transaction in
storage.setFriendRequestStatus(friendRequestStatus, forContact: hexEncodedPublicKey, transaction: transaction) storage.setFriendRequestStatus(friendRequestStatus, for: hexEncodedPublicKey, transaction: transaction)
autoGeneratedFRMessage.remove(with: transaction) autoGeneratedFRMessage.remove(with: transaction)
thread.isForceHidden = false thread.isForceHidden = false
thread.save(with: transaction) thread.save(with: transaction)
@ -201,7 +201,7 @@ public final class SyncMessagesProtocol : NSObject {
} }
}) })
case .requestReceived: case .requestReceived:
storage.setFriendRequestStatus(.friends, forContact: hexEncodedPublicKey, transaction: transaction) storage.setFriendRequestStatus(.friends, for: hexEncodedPublicKey, transaction: transaction)
// Not sendFriendRequestAcceptanceMessage(to:using:) to take into account multi device // Not sendFriendRequestAcceptanceMessage(to:using:) to take into account multi device
FriendRequestProtocol.acceptFriendRequest(from: hexEncodedPublicKey, using: transaction) FriendRequestProtocol.acceptFriendRequest(from: hexEncodedPublicKey, using: transaction)
default: break default: break

@ -40,7 +40,7 @@ class SyncMessagesProtocolTests : XCTestCase {
hexEncodedPublicKeys.forEach { hexEncodedPublicKey in hexEncodedPublicKeys.forEach { hexEncodedPublicKey in
var friendRequestStatus: LKFriendRequestStatus! var friendRequestStatus: LKFriendRequestStatus!
storage.dbReadWriteConnection.readWrite { transaction in storage.dbReadWriteConnection.readWrite { transaction in
friendRequestStatus = self.storage.getFriendRequestStatus(forContact: hexEncodedPublicKey, transaction: transaction) friendRequestStatus = self.storage.getFriendRequestStatus(for: hexEncodedPublicKey, transaction: transaction)
} }
XCTAssert(friendRequestStatus == .requestSent) XCTAssert(friendRequestStatus == .requestSent)
} }

@ -216,7 +216,7 @@ public class LokiP2PAPI : NSObject {
TSContactThread.enumerateCollectionObjects(with: transaction) { (object, _) in TSContactThread.enumerateCollectionObjects(with: transaction) { (object, _) in
guard let thread = object as? TSContactThread, let uniqueId = thread.uniqueId, thread.contactIdentifier() == ourHexEncodedPubKey else { return } guard let thread = object as? TSContactThread, let uniqueId = thread.uniqueId, thread.contactIdentifier() == ourHexEncodedPubKey else { return }
let status = storage.getFriendRequestStatus(forContact: thread.contactIdentifier(), transaction: transaction) let status = storage.getFriendRequestStatus(for: thread.contactIdentifier(), transaction: transaction)
if (status == .friends) { if (status == .friends) {
friendThreadIds.append(uniqueId) friendThreadIds.append(uniqueId)
} }

Loading…
Cancel
Save