From 5aa490a1fba29cc0fb35b890dfd2d1ed086fe84b Mon Sep 17 00:00:00 2001 From: Matthew Chen Date: Thu, 13 Aug 2020 10:07:45 -0300 Subject: [PATCH] Respond to CR. --- .../src/Messages/OWSMessageSender.m | 79 +------------------ .../src/Messages/OWSMessageSender.swift | 2 +- .../src/Messages/TypingIndicatorMessage.swift | 12 --- .../src/Messages/UD/OWSUDManager.swift | 25 +++--- .../src/Util/TypingIndicators.swift | 2 +- 5 files changed, 17 insertions(+), 103 deletions(-) diff --git a/SignalServiceKit/src/Messages/OWSMessageSender.m b/SignalServiceKit/src/Messages/OWSMessageSender.m index 0116a9a64f..6901a74749 100644 --- a/SignalServiceKit/src/Messages/OWSMessageSender.m +++ b/SignalServiceKit/src/Messages/OWSMessageSender.m @@ -597,83 +597,6 @@ NSString *const OWSMessageSenderRateLimitedException = @"RateLimitedException"; failure:failure]; } -- (nullable NSArray *)unsentRecipientsForMessage:(TSOutgoingMessage *)message - thread:(TSThread *)thread - error:(NSError **)errorHandle -{ - OWSAssertDebug(!NSThread.isMainThread); - OWSAssertDebug(message); - OWSAssertDebug(thread); - OWSAssertDebug(errorHandle); - - NSMutableSet *recipientAddresses = [NSMutableSet new]; - if ([message isKindOfClass:[OWSOutgoingSyncMessage class]]) { - [recipientAddresses addObject:self.tsAccountManager.localAddress]; - } else if (thread.isGroupThread) { - TSGroupThread *groupThread = (TSGroupThread *)thread; - - // Send to the intersection of: - // - // * "sending" recipients of the message. - // * members of the group. - // - // I.e. try to send a message IFF: - // - // * The recipient was in the group when the message was first tried to be sent. - // * The recipient is still in the group. - // * The recipient is in the "sending" state. - - [recipientAddresses addObjectsFromArray:message.sendingRecipientAddresses]; - - // Only send to members in the latest known group member list... - NSMutableSet *currentThreadRecipients = [NSMutableSet new]; - [currentThreadRecipients addObjectsFromArray:groupThread.groupModel.groupMembers]; - if ([GroupManager shouldMessageHaveAdditionalRecipients:message groupThread:groupThread]) { - // ...or latest known list of "additional recipients". - NSSet *additionalRecipients = groupThread.groupModel.groupMembership.pendingMembers; - [currentThreadRecipients unionSet:additionalRecipients]; - } - [recipientAddresses intersectSet:currentThreadRecipients]; - - if ([recipientAddresses containsObject:self.tsAccountManager.localAddress]) { - OWSFailDebug(@"Message send recipients should not include self."); - } - } else if ([thread isKindOfClass:[TSContactThread class]]) { - TSContactThread *contactThread = (TSContactThread *)thread; - SignalServiceAddress *recipientAddress = contactThread.contactAddress; - - // Treat 1:1 sends to blocked contacts as failures. - // If we block a user, don't send 1:1 messages to them. The UI - // should prevent this from occurring, but in some edge cases - // you might, for example, have a pending outgoing message when - // you block them. - OWSAssertDebug(recipientAddress); - if ([self.blockingManager isAddressBlocked:recipientAddress]) { - OWSLogInfo(@"skipping 1:1 send to blocked contact: %@", recipientAddress); - NSError *error = OWSErrorMakeMessageSendFailedDueToBlockListError(); - [error setIsRetryable:NO]; - *errorHandle = error; - return nil; - } - - [recipientAddresses addObject:recipientAddress]; - - if ([recipientAddresses containsObject:self.tsAccountManager.localAddress]) { - OWSFailDebug(@"Message send recipients should not include self."); - } - } else { - // Neither a group nor contact thread? This should never happen. - OWSFailDebug(@"Unknown message type: %@", [message class]); - NSError *error = OWSErrorMakeFailedToSendOutgoingMessageError(); - [error setIsRetryable:NO]; - *errorHandle = error; - return nil; - } - - [recipientAddresses minusSet:self.blockingManager.blockedAddresses]; - return recipientAddresses.allObjects; -} - - (NSArray *)recipientsForAddresses:(NSArray *)addresses { OWSAssertDebug(!NSThread.isMainThread); @@ -827,7 +750,7 @@ NSString *const OWSMessageSenderRateLimitedException = @"RateLimitedException"; TSContactThread *contactThread = (TSContactThread *)thread; // In the "self-send" aka "Note to Self" special case, we only // need to send a sync message with a delivery receipt. - if (contactThread && contactThread.contactAddress.isLocalAddress && !message.isSyncMessage) { + if (contactThread.contactAddress.isLocalAddress && !message.isSyncMessage) { // Send to self. OWSAssertDebug(sendInfo.recipients.count == 1); // Don't mark self-sent messages as read (or sent) until the sync transcript is sent. diff --git a/SignalServiceKit/src/Messages/OWSMessageSender.swift b/SignalServiceKit/src/Messages/OWSMessageSender.swift index bbe7b040e8..4abe05ed97 100644 --- a/SignalServiceKit/src/Messages/OWSMessageSender.swift +++ b/SignalServiceKit/src/Messages/OWSMessageSender.swift @@ -646,7 +646,7 @@ extension MessageSending { } else if let contactThread = thread as? TSContactThread { let contactAddress = contactThread.contactAddress if contactAddress.isLocalAddress { - owsFailDebug("Message send recipients should not include self.") + return [contactAddress] } // Treat 1:1 sends to blocked contacts as failures. diff --git a/SignalServiceKit/src/Messages/TypingIndicatorMessage.swift b/SignalServiceKit/src/Messages/TypingIndicatorMessage.swift index aa302e8c6b..d4d1dca10d 100644 --- a/SignalServiceKit/src/Messages/TypingIndicatorMessage.swift +++ b/SignalServiceKit/src/Messages/TypingIndicatorMessage.swift @@ -97,16 +97,4 @@ public class TypingIndicatorMessage: TSOutgoingMessage { public override var debugDescription: String { return "typingIndicatorMessage" } - - // MARK: - - @objc(stringForTypingIndicatorAction:) - public class func string(forTypingIndicatorAction action: TypingIndicatorAction) -> String { - switch action { - case .started: - return "started" - case .stopped: - return "stopped" - } - } } diff --git a/SignalServiceKit/src/Messages/UD/OWSUDManager.swift b/SignalServiceKit/src/Messages/UD/OWSUDManager.swift index fa8f917b55..063e784af7 100644 --- a/SignalServiceKit/src/Messages/UD/OWSUDManager.swift +++ b/SignalServiceKit/src/Messages/UD/OWSUDManager.swift @@ -29,16 +29,18 @@ public enum UnidentifiedAccessMode: Int { case unrestricted } -private func string(forUnidentifiedAccessMode mode: UnidentifiedAccessMode) -> String { - switch mode { - case .unknown: - return "unknown" - case .enabled: - return "enabled" - case .disabled: - return "disabled" - case .unrestricted: - return "unrestricted" +extension UnidentifiedAccessMode: CustomStringConvertible { + public var description: String { + switch self { + case .unknown: + return "unknown" + case .enabled: + return "enabled" + case .disabled: + return "disabled" + case .unrestricted: + return "unrestricted" + } } } @@ -341,8 +343,9 @@ public class OWSUDManagerImpl: NSObject, OWSUDManager { @objc public func setUnidentifiedAccessMode(_ mode: UnidentifiedAccessMode, address: SignalServiceAddress) { if address.isLocalAddress { - Logger.info("Setting local UD access mode: \(string(forUnidentifiedAccessMode: mode))") + Logger.info("Setting local UD access mode: \(mode)") } + // Update cache immediately. var didChange = false self.unfairLock.withLock { diff --git a/SignalServiceKit/src/Util/TypingIndicators.swift b/SignalServiceKit/src/Util/TypingIndicators.swift index 0f25051a56..82be4bf319 100644 --- a/SignalServiceKit/src/Util/TypingIndicators.swift +++ b/SignalServiceKit/src/Util/TypingIndicators.swift @@ -354,7 +354,7 @@ public class TypingIndicatorsImpl: NSObject, TypingIndicators { } private func sendTypingMessageIfNecessary(forThread thread: TSThread, action: TypingIndicatorAction) { - Logger.verbose("\(TypingIndicatorMessage.string(forTypingIndicatorAction: action))") + Logger.verbose("\(action)") guard let delegate = delegate else { owsFailDebug("Missing delegate.")