From a8092cbfa329b8a91be499e64828f1ea66db50f1 Mon Sep 17 00:00:00 2001
From: Niels Andriesse <andriesseniels@gmail.com>
Date: Wed, 8 May 2019 16:02:53 +1000
Subject: [PATCH] Fix crash

---
 .../ConversationView/ConversationViewModel.m  |  5 ++-
 SignalServiceKit/src/Loki/LokiAPI.swift       | 33 ++++++++++---------
 2 files changed, 21 insertions(+), 17 deletions(-)

diff --git a/Signal/src/ViewControllers/ConversationView/ConversationViewModel.m b/Signal/src/ViewControllers/ConversationView/ConversationViewModel.m
index 18ce348f3..8ebec14da 100644
--- a/Signal/src/ViewControllers/ConversationView/ConversationViewModel.m
+++ b/Signal/src/ViewControllers/ConversationView/ConversationViewModel.m
@@ -628,7 +628,10 @@ static const int kYapDatabaseRangeMaxLength = 25000;
     for (TSOutgoingMessage *unsavedOutgoingMessage in self.unsavedOutgoingMessages) {
         // unsavedOutgoingMessages should only exist for a short period (usually 30-50ms) before
         // they are saved and moved into the `persistedViewItems`
-        OWSAssertDebug(unsavedOutgoingMessage.timestamp >= ([NSDate ows_millisecondTimeStamp] - 1 * kSecondInMs));
+        // Loki: Original code
+        // ========
+//        OWSAssertDebug(unsavedOutgoingMessage.timestamp >= ([NSDate ows_millisecondTimeStamp] - 1 * kSecondInMs));
+        // ========
 
         BOOL isFound = ([diff.addedItemIds containsObject:unsavedOutgoingMessage.uniqueId] ||
             [diff.removedItemIds containsObject:unsavedOutgoingMessage.uniqueId] ||
diff --git a/SignalServiceKit/src/Loki/LokiAPI.swift b/SignalServiceKit/src/Loki/LokiAPI.swift
index 6497f88c7..7e782cede 100644
--- a/SignalServiceKit/src/Loki/LokiAPI.swift
+++ b/SignalServiceKit/src/Loki/LokiAPI.swift
@@ -1,19 +1,5 @@
 import PromiseKit
 
-// Helper function for objc apis
-private extension Promise where T == Any {
-    func recoverNetworkError(on queue: DispatchQueue) -> Promise<T> {
-        return self.recover(on: queue) { error -> Promise<T> in
-            switch error {
-            case NetworkManagerError.taskError(_, let underlyingError):
-                throw underlyingError
-            default:
-                throw error
-            }
-        }
-    }
-}
-
 @objc public final class LokiAPI : NSObject {
     
     private static let version = "v1"
@@ -81,8 +67,7 @@ private extension Promise where T == Any {
     
     // MARK: Obj-C API
     @objc public static func objc_getMessages() -> AnyPromise {
-        let promise = getMessages()
-            .recoverNetworkError(on: DispatchQueue.global())
+        let promise = getMessages().recoverNetworkError(on: DispatchQueue.global())
         let anyPromise = AnyPromise(promise)
         anyPromise.retainUntilComplete()
         return anyPromise
@@ -97,3 +82,19 @@ private extension Promise where T == Any {
         return anyPromise
     }
 }
+
+// MARK: - Convenience
+
+private extension Promise where T == Any {
+
+    func recoverNetworkError(on queue: DispatchQueue) -> Promise<T> {
+        return self.recover(on: queue) { error -> Promise<T> in
+            switch error {
+            case NetworkManagerError.taskError(_, let underlyingError):
+                throw underlyingError
+            default:
+                throw error
+            }
+        }
+    }
+}