From e6d97bee3c044b7bbe5fe61257b99698d75d011f Mon Sep 17 00:00:00 2001 From: Jungho Bang Date: Fri, 27 Sep 2024 13:09:38 -0700 Subject: [PATCH 1/4] Remove restrictions on host updates --- ios/CoinbaseWalletSDK/CoinbaseWalletSDK.swift | 37 +++++++------------ 1 file changed, 14 insertions(+), 23 deletions(-) diff --git a/ios/CoinbaseWalletSDK/CoinbaseWalletSDK.swift b/ios/CoinbaseWalletSDK/CoinbaseWalletSDK.swift index 35cadd44..02025cd8 100644 --- a/ios/CoinbaseWalletSDK/CoinbaseWalletSDK.swift +++ b/ios/CoinbaseWalletSDK/CoinbaseWalletSDK.swift @@ -27,22 +27,14 @@ public final class CoinbaseWalletSDK { // MARK: - Constructor - static private var host: URL? + // TODO: revisit singleton approach static private var callback: URL? - static public var isConfigured: Bool { - return host != nil && callback != nil - } - - static public func configure( - host: URL = URL(string: "https://wallet.coinbase.com/wsegue")!, - callback: URL - ) { - guard isConfigured == false else { + static public func configure(callback: URL) { + guard self.callback == nil else { assertionFailure("`CoinbaseWalletSDK.configure` should be called only once.") return } - self.host = host if callback.pathComponents.count < 2 { // [] or ["/"] self.callback = callback.appendingPathComponent("wsegue") } else { @@ -51,35 +43,34 @@ public final class CoinbaseWalletSDK { } static public var shared: CoinbaseWalletSDK = { - guard let host = CoinbaseWalletSDK.host, + guard let callback = CoinbaseWalletSDK.callback else { preconditionFailure("Missing configuration: call `CoinbaseWalletSDK.configure` before accessing the `shared` instance.") } - return CoinbaseWalletSDK(host: host, callback: callback) + return CoinbaseWalletSDK(callback: callback) }() // MARK: - Properties private let appId: String - private let host: URL + private var host: URL! // TODO: no optionals private let callback: URL - private lazy var keyManager: KeyManager = { - KeyManager(host: self.host) - }() + private var keyManager: KeyManager! // TODO: no optionals private lazy var taskManager: TaskManager = { TaskManager() }() - private init( - host: URL, - callback: URL - ) { - self.host = host + private init(callback: URL) { self.callback = callback - self.appId = Bundle.main.bundleIdentifier! + self.updateHost(host: URL(string: "https://wallet.coinbase.com/wsegue")!) // TODO: revisit host setup process + } + + public func updateHost(host: URL) { + self.host = host + self.keyManager = KeyManager(host: host) } // MARK: - Send message From 9de2dbb96dca7e0e3b42753b6353385835305a87 Mon Sep 17 00:00:00 2001 From: Jungho Bang Date: Fri, 27 Sep 2024 13:13:02 -0700 Subject: [PATCH 2/4] min diff --- ios/CoinbaseWalletSDK/CoinbaseWalletSDK.swift | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/ios/CoinbaseWalletSDK/CoinbaseWalletSDK.swift b/ios/CoinbaseWalletSDK/CoinbaseWalletSDK.swift index 02025cd8..c3aec2c9 100644 --- a/ios/CoinbaseWalletSDK/CoinbaseWalletSDK.swift +++ b/ios/CoinbaseWalletSDK/CoinbaseWalletSDK.swift @@ -29,7 +29,9 @@ public final class CoinbaseWalletSDK { // TODO: revisit singleton approach static private var callback: URL? - static public func configure(callback: URL) { + static public func configure( + callback: URL + ) { guard self.callback == nil else { assertionFailure("`CoinbaseWalletSDK.configure` should be called only once.") return @@ -62,7 +64,9 @@ public final class CoinbaseWalletSDK { TaskManager() }() - private init(callback: URL) { + private init( + callback: URL + ) { self.callback = callback self.appId = Bundle.main.bundleIdentifier! self.updateHost(host: URL(string: "https://wallet.coinbase.com/wsegue")!) // TODO: revisit host setup process From 2a2a0e41178a735e54678a7a81e74792cf01165d Mon Sep 17 00:00:00 2001 From: Jungho Bang Date: Fri, 27 Sep 2024 13:15:55 -0700 Subject: [PATCH 3/4] backward compatibility --- ios/CoinbaseWalletSDK/CoinbaseWalletSDK.swift | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/ios/CoinbaseWalletSDK/CoinbaseWalletSDK.swift b/ios/CoinbaseWalletSDK/CoinbaseWalletSDK.swift index c3aec2c9..8a6a2e27 100644 --- a/ios/CoinbaseWalletSDK/CoinbaseWalletSDK.swift +++ b/ios/CoinbaseWalletSDK/CoinbaseWalletSDK.swift @@ -44,6 +44,16 @@ public final class CoinbaseWalletSDK { } } + // backward compatibility + @available(*, deprecated, message: "Use instance method updateHost() instead") + static public func configure( + host: URL, + callback: URL + ) { + self.configure(callback: callback) + self.shared.updateHost(host: host) + } + static public var shared: CoinbaseWalletSDK = { guard let callback = CoinbaseWalletSDK.callback else { From 2a844b84168375d9a41d6eece67f2e9d9f58eac4 Mon Sep 17 00:00:00 2001 From: Jungho Bang Date: Fri, 27 Sep 2024 13:16:50 -0700 Subject: [PATCH 4/4] min diff --- ios/CoinbaseWalletSDK/CoinbaseWalletSDK.swift | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/ios/CoinbaseWalletSDK/CoinbaseWalletSDK.swift b/ios/CoinbaseWalletSDK/CoinbaseWalletSDK.swift index 8a6a2e27..36f991fa 100644 --- a/ios/CoinbaseWalletSDK/CoinbaseWalletSDK.swift +++ b/ios/CoinbaseWalletSDK/CoinbaseWalletSDK.swift @@ -29,9 +29,18 @@ public final class CoinbaseWalletSDK { // TODO: revisit singleton approach static private var callback: URL? + + // backward compatibility + @available(*, deprecated, message: "Use instance method updateHost() instead") static public func configure( + host: URL, callback: URL ) { + self.configure(callback: callback) + self.shared.updateHost(host: host) + } + + static public func configure(callback: URL) { guard self.callback == nil else { assertionFailure("`CoinbaseWalletSDK.configure` should be called only once.") return @@ -44,16 +53,6 @@ public final class CoinbaseWalletSDK { } } - // backward compatibility - @available(*, deprecated, message: "Use instance method updateHost() instead") - static public func configure( - host: URL, - callback: URL - ) { - self.configure(callback: callback) - self.shared.updateHost(host: host) - } - static public var shared: CoinbaseWalletSDK = { guard let callback = CoinbaseWalletSDK.callback else {