From 947287e42ff624cd52799d28fc07abbf5e7944f7 Mon Sep 17 00:00:00 2001 From: nielsandriesse Date: Wed, 13 Jan 2021 15:19:17 +1100 Subject: [PATCH] Debug --- Session/Open Groups/JoinPublicChatVC.swift | 28 ++++++++++--------- Session/Settings/MultiDeviceVC.swift | 1 + Session/Settings/NukeDataModal.swift | 2 +- .../OpenGroupManagerProtocol.swift | 2 +- .../MessageReceiver+Handling.swift | 2 +- .../Sending & Receiving/MessageSender.swift | 4 +-- .../To Do/OpenGroupManager.swift | 9 +++--- 7 files changed, 25 insertions(+), 23 deletions(-) diff --git a/Session/Open Groups/JoinPublicChatVC.swift b/Session/Open Groups/JoinPublicChatVC.swift index 98fedc4ef..adf1f1344 100644 --- a/Session/Open Groups/JoinPublicChatVC.swift +++ b/Session/Open Groups/JoinPublicChatVC.swift @@ -132,20 +132,22 @@ final class JoinPublicChatVC : BaseVC, UIPageViewControllerDataSource, UIPageVie } isJoining = true ModalActivityIndicatorViewController.present(fromViewController: navigationController!, canCancel: false) { [weak self] _ in - OpenGroupManager.shared.addOpenGroup(with: urlAsString) - .done(on: DispatchQueue.main) { [weak self] _ in - self?.presentingViewController!.dismiss(animated: true, completion: nil) - } - .catch(on: DispatchQueue.main) { [weak self] error in - self?.dismiss(animated: true, completion: nil) // Dismiss the loader - var title = "Couldn't Join" - var message = "" - if case OnionRequestAPI.Error.httpRequestFailedAtDestination(let statusCode, _) = error, statusCode == 401 || statusCode == 403 { - title = "Unauthorized" - message = "Please ask the open group operator to add you to the group." + Storage.shared.write { transaction in + OpenGroupManager.shared.addOpenGroup(with: urlAsString, using: transaction) + .done(on: DispatchQueue.main) { [weak self] _ in + self?.presentingViewController!.dismiss(animated: true, completion: nil) + } + .catch(on: DispatchQueue.main) { [weak self] error in + self?.dismiss(animated: true, completion: nil) // Dismiss the loader + var title = "Couldn't Join" + var message = "" + if case OnionRequestAPI.Error.httpRequestFailedAtDestination(let statusCode, _) = error, statusCode == 401 || statusCode == 403 { + title = "Unauthorized" + message = "Please ask the open group operator to add you to the group." + } + self?.isJoining = false + self?.showError(title: title, message: message) } - self?.isJoining = false - self?.showError(title: title, message: message) } } } diff --git a/Session/Settings/MultiDeviceVC.swift b/Session/Settings/MultiDeviceVC.swift index 0ab5da706..60fc933d5 100644 --- a/Session/Settings/MultiDeviceVC.swift +++ b/Session/Settings/MultiDeviceVC.swift @@ -19,6 +19,7 @@ final class MultiDeviceVC : BaseVC { private lazy var toggle: UISwitch = { let result = UISwitch() result.onTintColor = Colors.accent + result.isOn = UserDefaults.standard[.isUsingMultiDevice] return result }() diff --git a/Session/Settings/NukeDataModal.swift b/Session/Settings/NukeDataModal.swift index 8eaf5e24a..15ca1da09 100644 --- a/Session/Settings/NukeDataModal.swift +++ b/Session/Settings/NukeDataModal.swift @@ -51,7 +51,7 @@ final class NukeDataModal : Modal { @objc private func nuke() { func proceed() { let appDelegate = UIApplication.shared.delegate as! AppDelegate - ModalActivityIndicatorViewController.present(fromViewController: navigationController!, canCancel: false) { [weak self] _ in + ModalActivityIndicatorViewController.present(fromViewController: self, canCancel: false) { [weak self] _ in appDelegate.forceSyncConfigurationNowIfNeeded().done(on: DispatchQueue.main) { self?.dismiss(animated: true, completion: nil) // Dismiss the loader UserDefaults.removeAll() // Not done in the nuke data implementation as unlinking requires this to happen later diff --git a/SessionMessagingKit/OpenGroupManagerProtocol.swift b/SessionMessagingKit/OpenGroupManagerProtocol.swift index b76ab5300..2617d8e85 100644 --- a/SessionMessagingKit/OpenGroupManagerProtocol.swift +++ b/SessionMessagingKit/OpenGroupManagerProtocol.swift @@ -2,5 +2,5 @@ import PromiseKit public protocol OpenGroupManagerProtocol { - func addOpenGroup(with url: String) -> Promise + func addOpenGroup(with url: String, using transaction: Any) -> Promise } diff --git a/SessionMessagingKit/Sending & Receiving/MessageReceiver+Handling.swift b/SessionMessagingKit/Sending & Receiving/MessageReceiver+Handling.swift index cc4e73873..ca08ac18a 100644 --- a/SessionMessagingKit/Sending & Receiving/MessageReceiver+Handling.swift +++ b/SessionMessagingKit/Sending & Receiving/MessageReceiver+Handling.swift @@ -104,7 +104,7 @@ extension MessageReceiver { let allOpenGroups = Set(storage.getAllUserOpenGroups().keys) for openGroupURL in message.openGroups { guard !allOpenGroups.contains(openGroupURL) else { continue } - SNMessagingKitConfiguration.shared.openGroupManager.addOpenGroup(with: openGroupURL).retainUntilComplete() + SNMessagingKitConfiguration.shared.openGroupManager.addOpenGroup(with: openGroupURL, using: transaction).retainUntilComplete() } } diff --git a/SessionMessagingKit/Sending & Receiving/MessageSender.swift b/SessionMessagingKit/Sending & Receiving/MessageSender.swift index a1135ca8d..e269ef29b 100644 --- a/SessionMessagingKit/Sending & Receiving/MessageSender.swift +++ b/SessionMessagingKit/Sending & Receiving/MessageSender.swift @@ -137,8 +137,8 @@ public final class MessageSender : NSObject { } // Validate the message guard message.isValid else { handleFailure(with: Error.invalidMessage, using: transaction); return promise } - // Stop here if this is a self-send - guard !isSelfSend else { + // Stop here if this is a self-send (unless it's a configuration message) + guard !isSelfSend || message is ConfigurationMessage else { storage.write(with: { transaction in MessageSender.handleSuccessfulMessageSend(message, to: destination, using: transaction) seal.fulfill(()) diff --git a/SignalUtilitiesKit/To Do/OpenGroupManager.swift b/SignalUtilitiesKit/To Do/OpenGroupManager.swift index bb5c8eccc..1c230aedb 100644 --- a/SignalUtilitiesKit/To Do/OpenGroupManager.swift +++ b/SignalUtilitiesKit/To Do/OpenGroupManager.swift @@ -16,7 +16,7 @@ public final class OpenGroupManager : OpenGroupManagerProtocol { private init() { } - public func addOpenGroup(with url: String) -> Promise { + public func addOpenGroup(with url: String, using transaction: Any) -> Promise { guard let url = URL(string: url), let scheme = url.scheme, scheme == "https", url.host != nil else { return Promise(error: Error.invalidURL) } @@ -27,10 +27,9 @@ public final class OpenGroupManager : OpenGroupManagerProtocol { let displayName = profileManager.profileNameForRecipient(withID: userPublicKey) let profilePictureURL = profileManager.profilePictureURL() let profileKey = profileManager.localProfileKey().keyData - Storage.writeSync { transaction in - transaction.removeObject(forKey: "\(urlAsString).\(channelID)", inCollection: Storage.lastMessageServerIDCollection) - transaction.removeObject(forKey: "\(urlAsString).\(channelID)", inCollection: Storage.lastDeletionServerIDCollection) - } + let transaction = transaction as! YapDatabaseReadWriteTransaction + transaction.removeObject(forKey: "\(urlAsString).\(channelID)", inCollection: Storage.lastMessageServerIDCollection) + transaction.removeObject(forKey: "\(urlAsString).\(channelID)", inCollection: Storage.lastDeletionServerIDCollection) return PublicChatManager.shared.addChat(server: urlAsString, channel: channelID).done(on: DispatchQueue.main) { _ in let _ = OpenGroupAPI.setDisplayName(to: displayName, on: urlAsString) let _ = OpenGroupAPI.setProfilePictureURL(to: profilePictureURL, using: profileKey, on: urlAsString)