Minor refactoring

This commit is contained in:
nielsandriesse 2020-05-06 15:30:05 +10:00
parent c2e34fb36e
commit 8df2f2a8b5
5 changed files with 11 additions and 12 deletions

View File

@ -228,7 +228,7 @@
- (NSSet<NSString *> *)getAllFriendsWithTransaction:(YapDatabaseReadTransaction *)transaction {
NSMutableSet<NSString *> *hexEncodedPublicKeys = [NSMutableSet set];
[transaction enumerateKeysAndObjectsInCollection:LKFriendRequestCollection usingBlock:^(NSString *hexEncodedPublicKey, NSNumber *status, BOOL * _Nonnull stop) {
[transaction enumerateKeysAndObjectsInCollection:LKFriendRequestCollection usingBlock:^(NSString *hexEncodedPublicKey, NSNumber *status, BOOL *stop) {
if ([status integerValue] == LKFriendRequestStatusFriends) {
[hexEncodedPublicKeys addObject:hexEncodedPublicKey];
}

View File

@ -170,8 +170,8 @@ public final class FriendRequestProtocol : NSObject {
@objc(shouldUpdateFriendRequestStatusFromMessage:)
public static func shouldUpdateFriendRequestStatus(from message: TSOutgoingMessage) -> Bool {
// The order of these checks matters
if (message.thread.isGroupThread()) { return false }
if (message.thread.contactIdentifier() == getUserHexEncodedPublicKey()) { return false }
if message.thread.isGroupThread() { return false }
if message.thread.contactIdentifier() == getUserHexEncodedPublicKey() { return false }
if (message as? DeviceLinkMessage)?.kind == .request { return true }
if message is SessionRequestMessage { return false }
return message is FriendRequestMessage
@ -245,9 +245,8 @@ public final class FriendRequestProtocol : NSObject {
// Signal cipher decryption and thus that we have a session with the other person.
let friendRequestStatus = storage.getFriendRequestStatus(for: hexEncodedPublicKey, transaction: transaction);
// We shouldn't be able to skip from none to friends
guard friendRequestStatus == .requestSending ||
friendRequestStatus == .requestSent ||
friendRequestStatus == .requestReceived else { return }
guard friendRequestStatus == .requestSending || friendRequestStatus == .requestSent
|| friendRequestStatus == .requestReceived else { return }
// Become friends
storage.setFriendRequestStatus(.friends, for: hexEncodedPublicKey, transaction: transaction)
// Send a contact sync message if needed

View File

@ -622,7 +622,6 @@ class FriendRequestProtocolTests : XCTestCase {
}
// MARK: - shouldUpdateFriendRequestStatus
func test_shouldUpdateFriendRequestStatusReturnsTheCorrectValue() {
let thread = LokiTestUtilities.createContactThread(for: LokiTestUtilities.generateHexEncodedPublicKey())

View File

@ -36,7 +36,8 @@ public final class SyncMessagesProtocol : NSObject {
}
public static func syncAllContacts() -> Promise<Void> {
// We need to sync over all contacts whom we are friends with.
// We need to sync over all contacts whom we are friends with, even if
// we don't have a thread for them.
var hepks: [String] = []
storage.dbReadConnection.read { transaction in
hepks = self.storage
@ -44,7 +45,6 @@ public final class SyncMessagesProtocol : NSObject {
.filter { ECKeyPair.isValidHexEncodedPublicKey(candidate: $0) }
.map { storage.getMasterHexEncodedPublicKey(for: $0, in: transaction) ?? $0 }
}
let friends = Set(hepks).map { SignalAccount(recipientId: $0) }
let syncManager = SSKEnvironment.shared.syncManager
let promises = friends.chunked(by: 3).map { friends -> Promise<Void> in // TODO: Does this always fit?
@ -166,10 +166,10 @@ public final class SyncMessagesProtocol : NSObject {
public static func handleContactSyncMessageData(_ data: Data, using transaction: YapDatabaseReadWriteTransaction) {
let parser = ContactParser(data: data)
let hexEncodedPublicKeys = parser.parseHexEncodedPublicKeys()
let ourHexEncodedPublicKey = getUserHexEncodedPublicKey()
let userHexEncodedPublicKey = getUserHexEncodedPublicKey()
// Try to establish sessions
for hexEncodedPublicKey in hexEncodedPublicKeys {
guard hexEncodedPublicKey != ourHexEncodedPublicKey else { continue } // Skip self
guard hexEncodedPublicKey != userHexEncodedPublicKey else { continue } // Skip self
// We don't update the friend request status; that's done in OWSMessageSender.sendMessage(_:)
let friendRequestStatus = storage.getFriendRequestStatus(for: hexEncodedPublicKey, transaction: transaction)
switch friendRequestStatus {

View File

@ -384,7 +384,8 @@ NSString *const OWSMessageSenderRateLimitedException = @"RateLimitedException";
[allAttachmentIds
addObjectsFromArray:[OutgoingMessagePreparer prepareMessageForSending:message transaction:transaction]];
// Loki - Optimistically update friend request status when we can
// Loki: Optimistically update friend request status when we can. This is used for
// e.g. preventing AFRs from being sent twice on a contact sync.
if ([LKFriendRequestProtocol shouldUpdateFriendRequestStatusFromMessage:message]) {
[LKFriendRequestProtocol setFriendRequestStatusToSendingIfNeededForHexEncodedPublicKey:message.thread.contactIdentifier transaction:transaction];
}