From c20327a9f0c1d4f98c484ba89680b11967aa5f3e Mon Sep 17 00:00:00 2001 From: Lawrence Forooghian Date: Tue, 8 Oct 2024 11:20:11 -0300 Subject: [PATCH] Switch to (temporarily) use `main` branch of ably-cocoa This allows us to make use of the Swift concurrency enhancements that have been added on `main`, and to identify any further concurrency enhancements that still need to be made (in response to any new concurrency errors that we get as we continue to develop the Chat SDK). --- .../xcshareddata/swiftpm/Package.resolved | 6 +++--- Example/AblyChatExample/Mocks/MockRealtime.swift | 8 ++++++++ Package.resolved | 6 +++--- Package.swift | 3 ++- .../AblyChat/AblyCocoaExtensions/Ably+Dependencies.swift | 9 +++------ 5 files changed, 19 insertions(+), 13 deletions(-) diff --git a/AblyChat.xcworkspace/xcshareddata/swiftpm/Package.resolved b/AblyChat.xcworkspace/xcshareddata/swiftpm/Package.resolved index 9cffb1ec..74c3fc81 100644 --- a/AblyChat.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/AblyChat.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -1,13 +1,13 @@ { - "originHash" : "fcc346d6fe86e610ac200cdbbf91c56204df67286546d5079bd9c610ee65953b", + "originHash" : "6a8d15fb1d326ac6e8a40c286c152332146d6f58c73123cb8083f68d483dd728", "pins" : [ { "identity" : "ably-cocoa", "kind" : "remoteSourceControl", "location" : "https://github.com/ably/ably-cocoa", "state" : { - "revision" : "7f639c609e50053abd4590f34333f9472645558a", - "version" : "1.2.33" + "branch" : "main", + "revision" : "ccca241a8a7f08b22a93802161460c843d9b5bf3" } }, { diff --git a/Example/AblyChatExample/Mocks/MockRealtime.swift b/Example/AblyChatExample/Mocks/MockRealtime.swift index 067e8f69..0d3d48c1 100644 --- a/Example/AblyChatExample/Mocks/MockRealtime.swift +++ b/Example/AblyChatExample/Mocks/MockRealtime.swift @@ -3,6 +3,10 @@ import AblyChat /// A mock implementation of `RealtimeClientProtocol`. It only exists so that we can construct an instance of `DefaultChatClient` without needing to create a proper `ARTRealtime` instance (which we can’t yet do because we don’t have a method for inserting an API key into the example app). TODO remove this once we start building the example app final class MockRealtime: NSObject, RealtimeClientProtocol, Sendable { + func request(_: String, path _: String, params _: [String: String]?, body _: Any?, headers _: [String: String]?, callback _: @escaping ARTHTTPPaginatedCallback) throws { + fatalError("Not implemented") + } + var device: ARTLocalDevice { fatalError("Not implemented") } @@ -32,6 +36,10 @@ final class MockRealtime: NSObject, RealtimeClientProtocol, Sendable { } final class Channel: RealtimeChannelProtocol { + var properties: ARTChannelProperties { + fatalError("Not implemented") + } + var state: ARTRealtimeChannelState { fatalError("Not implemented") } diff --git a/Package.resolved b/Package.resolved index 9cffb1ec..03ddbb80 100644 --- a/Package.resolved +++ b/Package.resolved @@ -1,13 +1,13 @@ { - "originHash" : "fcc346d6fe86e610ac200cdbbf91c56204df67286546d5079bd9c610ee65953b", + "originHash" : "db24f2979451a46f504f45d35893eb8501f27488ae70e1412340139a0e7551e2", "pins" : [ { "identity" : "ably-cocoa", "kind" : "remoteSourceControl", "location" : "https://github.com/ably/ably-cocoa", "state" : { - "revision" : "7f639c609e50053abd4590f34333f9472645558a", - "version" : "1.2.33" + "branch" : "main", + "revision" : "ccca241a8a7f08b22a93802161460c843d9b5bf3" } }, { diff --git a/Package.swift b/Package.swift index fc233cd2..14f5e281 100644 --- a/Package.swift +++ b/Package.swift @@ -20,7 +20,8 @@ let package = Package( dependencies: [ .package( url: "https://github.com/ably/ably-cocoa", - from: "1.2.0" + // TODO: Switch back to using a tag (https://github.com/ably-labs/ably-chat-swift/issues/80) + branch: "main" ), .package( url: "https://github.com/apple/swift-argument-parser", diff --git a/Sources/AblyChat/AblyCocoaExtensions/Ably+Dependencies.swift b/Sources/AblyChat/AblyCocoaExtensions/Ably+Dependencies.swift index b193a9fe..ae17fde3 100644 --- a/Sources/AblyChat/AblyCocoaExtensions/Ably+Dependencies.swift +++ b/Sources/AblyChat/AblyCocoaExtensions/Ably+Dependencies.swift @@ -1,10 +1,7 @@ import Ably -// TODO: remove "@unchecked Sendable" once https://github.com/ably/ably-cocoa/issues/1962 done +extension ARTRealtime: RealtimeClientProtocol {} -// This @retroactive is needed to silence the Swift 6 compiler error "extension declares a conformance of imported type 'ARTRealtimeChannels' to imported protocol 'Sendable'; this will not behave correctly if the owners of 'Ably' introduce this conformance in the future (…) add '@retroactive' to silence this warning". I don’t fully understand the implications of this but don’t really mind since both libraries are in our control. -extension ARTRealtime: RealtimeClientProtocol, @retroactive @unchecked Sendable {} +extension ARTRealtimeChannels: RealtimeChannelsProtocol {} -extension ARTRealtimeChannels: RealtimeChannelsProtocol, @retroactive @unchecked Sendable {} - -extension ARTRealtimeChannel: RealtimeChannelProtocol, @retroactive @unchecked Sendable {} +extension ARTRealtimeChannel: RealtimeChannelProtocol {}