From c1e9422b0cc7cb9f60988d10ec4aad00053dd41e Mon Sep 17 00:00:00 2001 From: Joel Perry Date: Tue, 15 Sep 2020 13:22:26 -0500 Subject: [PATCH 1/5] Update function signatures for apollo-ios beta --- Package.swift | 2 +- .../ApolloCombine/ApolloClientExtensions.swift | 15 ++++++--------- Sources/ApolloCombine/PublishersExtensions.swift | 12 +++--------- 3 files changed, 10 insertions(+), 19 deletions(-) diff --git a/Package.swift b/Package.swift index 3608cad..0200a33 100644 --- a/Package.swift +++ b/Package.swift @@ -16,7 +16,7 @@ let package = Package( ], dependencies: [ .package(name: "Apollo", - url: "https://github.com/apollographql/apollo-ios.git", from: "0.28.0") + url: "https://github.com/apollographql/apollo-ios.git", .exact("0.33.0-beta1")) ], targets: [ .target(name: "ApolloCombine", dependencies: [.product(name: "Apollo", package: "Apollo")]) diff --git a/Sources/ApolloCombine/ApolloClientExtensions.swift b/Sources/ApolloCombine/ApolloClientExtensions.swift index ed383d8..293f496 100644 --- a/Sources/ApolloCombine/ApolloClientExtensions.swift +++ b/Sources/ApolloCombine/ApolloClientExtensions.swift @@ -14,9 +14,9 @@ public extension ApolloClient { /// - Returns: A publisher that delivers results from the fetch operaion. func fetchPublisher(query: Query, cachePolicy: CachePolicy = .returnCacheDataElseFetch, - context: UnsafeMutableRawPointer? = nil, + contextIdentifier: UUID? = nil, queue: DispatchQueue = .main) -> Publishers.ApolloFetch { - let config = Publishers.ApolloFetchConfiguration(client: self, query: query, cachePolicy: cachePolicy, context: context, queue: queue) + let config = Publishers.ApolloFetchConfiguration(client: self, query: query, cachePolicy: cachePolicy, contextIdentifier: contextIdentifier, queue: queue) return Publishers.ApolloFetch(with: config) } @@ -28,9 +28,8 @@ public extension ApolloClient { /// - queue: A dispatch queue on which the result handler will be called. Defaults to the main queue. /// - Returns: A publisher that delivers results from the perform operaion. func performPublisher(mutation: Mutation, - context: UnsafeMutableRawPointer? = nil, queue: DispatchQueue = .main) -> Publishers.ApolloPerform { - let config = Publishers.ApolloPerformConfiguration(client: self, mutation: mutation, context: context, queue: queue) + let config = Publishers.ApolloPerformConfiguration(client: self, mutation: mutation, queue: queue) return Publishers.ApolloPerform(with: config) } @@ -43,10 +42,9 @@ public extension ApolloClient { /// - queue: A dispatch queue on which the result handler will be called. Defaults to the main queue. /// - Returns: A publisher that delivers results from the upload operaion. func uploadPublisher(operation: Operation, - context: UnsafeMutableRawPointer? = nil, files: [GraphQLFile], queue: DispatchQueue = .main) -> Publishers.ApolloUpload { - let config = Publishers.ApolloUploadConfiguration(client: self, operation: operation, context: context, files: files, queue: queue) + let config = Publishers.ApolloUploadConfiguration(client: self, operation: operation, files: files, queue: queue) return Publishers.ApolloUpload(with: config) } @@ -58,9 +56,8 @@ public extension ApolloClient { /// - queue: A dispatch queue on which the result handler will be called. Defaults to the main queue. /// - Returns: A publisher that delivers results from the watch operaion. func watchPublisher(query: Query, - cachePolicy: CachePolicy = .returnCacheDataElseFetch, - queue: DispatchQueue = .main) -> Publishers.ApolloWatch { - let config = Publishers.ApolloWatchConfiguration(client: self, query: query, cachePolicy: cachePolicy, queue: queue) + cachePolicy: CachePolicy = .returnCacheDataElseFetch) -> Publishers.ApolloWatch { + let config = Publishers.ApolloWatchConfiguration(client: self, query: query, cachePolicy: cachePolicy) return Publishers.ApolloWatch(with: config) } diff --git a/Sources/ApolloCombine/PublishersExtensions.swift b/Sources/ApolloCombine/PublishersExtensions.swift index e16142d..ac2912e 100644 --- a/Sources/ApolloCombine/PublishersExtensions.swift +++ b/Sources/ApolloCombine/PublishersExtensions.swift @@ -30,7 +30,7 @@ public extension Publishers { let client: ApolloClient let query: Query let cachePolicy: CachePolicy - let context: UnsafeMutableRawPointer? + let contextIdentifier: UUID? let queue: DispatchQueue } @@ -48,7 +48,7 @@ public extension Publishers { func request(_ demand: Subscribers.Demand) { task = configuration.client.fetch(query: configuration.query, cachePolicy: configuration.cachePolicy, - context: configuration.context, + contextIdentifier: configuration.contextIdentifier, queue: configuration.queue) { [weak self] result in switch result { @@ -93,7 +93,6 @@ public extension Publishers { struct ApolloPerformConfiguration { let client: ApolloClient let mutation: Mutation - let context: UnsafeMutableRawPointer? let queue: DispatchQueue } @@ -110,7 +109,6 @@ public extension Publishers { func request(_ demand: Subscribers.Demand) { task = configuration.client.perform(mutation: configuration.mutation, - context: configuration.context, queue: configuration.queue) { [weak self] result in switch result { @@ -151,7 +149,6 @@ public extension Publishers { struct ApolloUploadConfiguration { let client: ApolloClient let operation: Operation - let context: UnsafeMutableRawPointer? let files: [GraphQLFile] let queue: DispatchQueue } @@ -169,7 +166,6 @@ public extension Publishers { func request(_ demand: Subscribers.Demand) { task = configuration.client.upload(operation: configuration.operation, - context: configuration.context, files: configuration.files, queue: configuration.queue) { [weak self] result in @@ -212,7 +208,6 @@ public extension Publishers { let client: ApolloClient let query: Query let cachePolicy: CachePolicy - let queue: DispatchQueue } private final class ApolloWatchSubscription: Subscription @@ -228,8 +223,7 @@ public extension Publishers { func request(_ demand: Subscribers.Demand) { task = configuration.client.watch(query: configuration.query, - cachePolicy: configuration.cachePolicy, - queue: configuration.queue) + cachePolicy: configuration.cachePolicy) { [weak self] result in switch result { case .success(let data): From 1b9b8add06f735f6fc2123abf33b752256219dd7 Mon Sep 17 00:00:00 2001 From: Joel Perry Date: Wed, 16 Sep 2020 12:11:15 -0500 Subject: [PATCH 2/5] Update dependencies --- Package.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Package.swift b/Package.swift index 0200a33..a4d9c8f 100644 --- a/Package.swift +++ b/Package.swift @@ -16,7 +16,7 @@ let package = Package( ], dependencies: [ .package(name: "Apollo", - url: "https://github.com/apollographql/apollo-ios.git", .exact("0.33.0-beta1")) + url: "https://github.com/apollographql/apollo-ios.git", .exact("0.34.0-beta2")) ], targets: [ .target(name: "ApolloCombine", dependencies: [.product(name: "Apollo", package: "Apollo")]) From a371fe2cfa292e7a2a62687a4d1fcd2a5e9b00c2 Mon Sep 17 00:00:00 2001 From: Joel Perry Date: Fri, 18 Sep 2020 16:35:45 -0500 Subject: [PATCH 3/5] Update Apollo to 0.34.0-rc.1 --- Package.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Package.swift b/Package.swift index a4d9c8f..62ec5b0 100644 --- a/Package.swift +++ b/Package.swift @@ -16,7 +16,7 @@ let package = Package( ], dependencies: [ .package(name: "Apollo", - url: "https://github.com/apollographql/apollo-ios.git", .exact("0.34.0-beta2")) + url: "https://github.com/apollographql/apollo-ios.git", .exact("0.34.0-rc.1")) ], targets: [ .target(name: "ApolloCombine", dependencies: [.product(name: "Apollo", package: "Apollo")]) From 0a5efd789dff8575f1f2d248474058bb4566ec08 Mon Sep 17 00:00:00 2001 From: Joel Perry Date: Tue, 22 Sep 2020 08:25:55 -0500 Subject: [PATCH 4/5] Update dependency requirement --- Package.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Package.swift b/Package.swift index 62ec5b0..5e5a052 100644 --- a/Package.swift +++ b/Package.swift @@ -16,7 +16,7 @@ let package = Package( ], dependencies: [ .package(name: "Apollo", - url: "https://github.com/apollographql/apollo-ios.git", .exact("0.34.0-rc.1")) + url: "https://github.com/apollographql/apollo-ios.git", from: "0.34.0-rc.1") ], targets: [ .target(name: "ApolloCombine", dependencies: [.product(name: "Apollo", package: "Apollo")]) From 24bd8bcdcc20e251cd5952e5fad533b527c21552 Mon Sep 17 00:00:00 2001 From: Joel Perry Date: Tue, 22 Sep 2020 13:22:38 -0500 Subject: [PATCH 5/5] Update README --- Package.swift | 2 +- README.md | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/Package.swift b/Package.swift index 5e5a052..011b00e 100644 --- a/Package.swift +++ b/Package.swift @@ -16,7 +16,7 @@ let package = Package( ], dependencies: [ .package(name: "Apollo", - url: "https://github.com/apollographql/apollo-ios.git", from: "0.34.0-rc.1") + url: "https://github.com/apollographql/apollo-ios.git", from: "0.34.0-beta2") ], targets: [ .target(name: "ApolloCombine", dependencies: [.product(name: "Apollo", package: "Apollo")]) diff --git a/README.md b/README.md index c78c3d2..1d65fa5 100644 --- a/README.md +++ b/README.md @@ -5,6 +5,12 @@ A collection of Combine publishers for the [Apollo iOS client](https://github.com/apollographql/apollo-ios). +## Versions +The Apollo iOS client uses a new networking stack beginning with 0.34.0-beta2, so the version of ApolloCombine you should use depends on whether you have adopted this change. + +- Use ApolloCombine release 0.2.2 if you have not upgraded to the new networking stack +- Use ApolloCombine release 0.3.0 and above if you are using the new networking stack + ## Usage The extension to ApolloClient (in the aptly named `ApolloClientExtensions`) includes methods whose inputs mirror the existing ApolloClient operation methods. Instead of including a result handler, though, these methods return Combine publishers that deliver the results of the operation to subscribers.