From ce0d3fa9ece5cea53ead2c67c3ffae82b602ca68 Mon Sep 17 00:00:00 2001 From: Niels Andriesse Date: Wed, 11 Mar 2020 15:41:04 +1100 Subject: [PATCH 1/2] Disable Signal delivery acknowledgment --- Signal/src/Jobs/MessageFetcherJob.swift | 42 +------------------------ 1 file changed, 1 insertion(+), 41 deletions(-) diff --git a/Signal/src/Jobs/MessageFetcherJob.swift b/Signal/src/Jobs/MessageFetcherJob.swift index 4e83a2d24..038859da1 100644 --- a/Signal/src/Jobs/MessageFetcherJob.swift +++ b/Signal/src/Jobs/MessageFetcherJob.swift @@ -200,49 +200,9 @@ public class MessageFetcherJob: NSObject { private func fetchUndeliveredMessages() -> Promise>> { return LokiAPI.getMessages() - // Loki: Original code - // ======== -// let request = OWSRequestFactory.getMessagesRequest() -// self.networkManager.makeRequest( -// request, -// success: { (_: URLSessionDataTask?, responseObject: Any?) -> Void in -// guard let (envelopes, more) = self.parseMessagesResponse(responseObject: responseObject) else { -// Logger.error("response object had unexpected content") -// return resolver.reject(OWSErrorMakeUnableToProcessServerResponseError()) -// } -// -// resolver.fulfill((envelopes: envelopes, more: more)) -// }, -// failure: { (_: URLSessionDataTask?, error: Error?) in -// guard let error = error else { -// Logger.error("error was surpringly nil. sheesh rough day.") -// return resolver.reject(OWSErrorMakeUnableToProcessServerResponseError()) -// } -// -// resolver.reject(error) -// }) - // ======== } private func acknowledgeDelivery(envelope: SSKProtoEnvelope) { - let request: TSRequest - if let serverGuid = envelope.serverGuid, serverGuid.count > 0 { - request = OWSRequestFactory.acknowledgeMessageDeliveryRequest(withServerGuid: serverGuid) - } else if let source = envelope.source, source.count > 0, envelope.timestamp > 0 { - request = OWSRequestFactory.acknowledgeMessageDeliveryRequest(withSource: source, timestamp: envelope.timestamp) - } else if envelope.type == .unidentifiedSender, envelope.timestamp > 0 { - request = OWSRequestFactory.acknowledgeMessageDeliveryRequest(withSource: envelope.source!, timestamp: envelope.timestamp) - } else { - owsFailDebug("Cannot ACK message which has neither source, nor server GUID and timestamp.") - return - } - - self.networkManager.makeRequest(request, - success: { (_: URLSessionDataTask?, _: Any?) -> Void in - Logger.debug("acknowledged delivery for message at timestamp: \(envelope.timestamp)") - }, - failure: { (_: URLSessionDataTask?, error: Error?) in - Logger.debug("acknowledging delivery for message at timestamp: \(envelope.timestamp) failed with error: \(String(describing: error))") - }) + // Do nothing } } From bfbbfa85a53880c9b2b8b319d6d9075a61c355fb Mon Sep 17 00:00:00 2001 From: Niels Andriesse Date: Wed, 11 Mar 2020 15:49:32 +1100 Subject: [PATCH 2/2] Avoid nested write transaction --- Signal/src/Loki/Components/ConversationTitleView.swift | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/Signal/src/Loki/Components/ConversationTitleView.swift b/Signal/src/Loki/Components/ConversationTitleView.swift index 6f9103012..5aa9cb205 100644 --- a/Signal/src/Loki/Components/ConversationTitleView.swift +++ b/Signal/src/Loki/Components/ConversationTitleView.swift @@ -134,9 +134,12 @@ final class ConversationTitleView : UIView { private func clearStatusIfNeededForMessageWithTimestamp(_ timestamp: NSNumber) { var uncheckedTargetInteraction: TSInteraction? = nil - thread.enumerateInteractions { interaction in - guard interaction.timestamp == timestamp.uint64Value else { return } - uncheckedTargetInteraction = interaction + OWSPrimaryStorage.shared().dbReadConnection.read { transaction in + guard let interactionsByThread = transaction.ext(TSMessageDatabaseViewExtensionName) as? YapDatabaseViewTransaction else { return } + interactionsByThread.enumerateKeysAndObjects(inGroup: self.thread.uniqueId!) { _, _, object, _, _ in + guard let interaction = object as? TSInteraction, interaction.timestamp == timestamp.uint64Value else { return } + uncheckedTargetInteraction = interaction + } } guard let targetInteraction = uncheckedTargetInteraction, targetInteraction.interactionType() == .outgoingMessage else { return } self.currentStatus = nil