Skip to content

Commit 385ef3f

Browse files
committed
Add some publishers for LiveQuery
1 parent c120a32 commit 385ef3f

File tree

2 files changed

+61
-0
lines changed

2 files changed

+61
-0
lines changed

ParseSwift.xcodeproj/project.pbxproj

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -384,6 +384,10 @@
384384
91678706259BC5D400BB5B4E /* ParseCloudTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 916786EF259BC59600BB5B4E /* ParseCloudTests.swift */; };
385385
91678710259BC5D600BB5B4E /* ParseCloudTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 916786EF259BC59600BB5B4E /* ParseCloudTests.swift */; };
386386
9167871A259BC5D600BB5B4E /* ParseCloudTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 916786EF259BC59600BB5B4E /* ParseCloudTests.swift */; };
387+
918CED592684C74000CFDC83 /* ParseLiveQuery+combine.swift in Sources */ = {isa = PBXBuildFile; fileRef = 918CED582684C74000CFDC83 /* ParseLiveQuery+combine.swift */; };
388+
918CED5A2684C74000CFDC83 /* ParseLiveQuery+combine.swift in Sources */ = {isa = PBXBuildFile; fileRef = 918CED582684C74000CFDC83 /* ParseLiveQuery+combine.swift */; };
389+
918CED5B2684C74000CFDC83 /* ParseLiveQuery+combine.swift in Sources */ = {isa = PBXBuildFile; fileRef = 918CED582684C74000CFDC83 /* ParseLiveQuery+combine.swift */; };
390+
918CED5C2684C74000CFDC83 /* ParseLiveQuery+combine.swift in Sources */ = {isa = PBXBuildFile; fileRef = 918CED582684C74000CFDC83 /* ParseLiveQuery+combine.swift */; };
387391
9194657824F16E330070296B /* ParseACLTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9194657724F16E330070296B /* ParseACLTests.swift */; };
388392
91B40651267A66ED00B129CD /* ParseErrorTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 91B40650267A66ED00B129CD /* ParseErrorTests.swift */; };
389393
91B40652267A66ED00B129CD /* ParseErrorTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 91B40650267A66ED00B129CD /* ParseErrorTests.swift */; };
@@ -707,6 +711,7 @@
707711
9158916A256A07DD0024BE9A /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = "<group>"; };
708712
916786E1259B7DDA00BB5B4E /* ParseCloud.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ParseCloud.swift; sourceTree = "<group>"; };
709713
916786EF259BC59600BB5B4E /* ParseCloudTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ParseCloudTests.swift; sourceTree = "<group>"; };
714+
918CED582684C74000CFDC83 /* ParseLiveQuery+combine.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "ParseLiveQuery+combine.swift"; sourceTree = "<group>"; };
710715
9194657724F16E330070296B /* ParseACLTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ParseACLTests.swift; sourceTree = "<group>"; };
711716
91B40650267A66ED00B129CD /* ParseErrorTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ParseErrorTests.swift; sourceTree = "<group>"; };
712717
91CB9536265966DF0043E5D6 /* ParseAnanlyticsCombineTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ParseAnanlyticsCombineTests.swift; sourceTree = "<group>"; };
@@ -1048,6 +1053,7 @@
10481053
7003959425A10DFC0052CB31 /* Messages.swift */,
10491054
700395A225A119430052CB31 /* Operations.swift */,
10501055
7003960825A184EF0052CB31 /* ParseLiveQuery.swift */,
1056+
918CED582684C74000CFDC83 /* ParseLiveQuery+combine.swift */,
10511057
700395B925A1470F0052CB31 /* Subscription.swift */,
10521058
705D950725BE4C08003EF6F8 /* SubscriptionCallback.swift */,
10531059
700395DE25A147C40052CB31 /* Protocols */,
@@ -1651,6 +1657,7 @@
16511657
7044C1C825C5B2B10011F6E7 /* ParseAuthentication+combine.swift in Sources */,
16521658
707A3BF125B0A4F0000D215C /* ParseAuthentication.swift in Sources */,
16531659
70D1BE7325BB43EB00A42E7C /* BaseConfig.swift in Sources */,
1660+
918CED592684C74000CFDC83 /* ParseLiveQuery+combine.swift in Sources */,
16541661
70386A0625D9718C0048EC1B /* Data+hexString.swift in Sources */,
16551662
F97B465F24D9C7B500F4A88B /* KeychainStore.swift in Sources */,
16561663
70170A442656B02D0070C905 /* ParseAnalytics.swift in Sources */,
@@ -1805,6 +1812,7 @@
18051812
7044C1C925C5B2B10011F6E7 /* ParseAuthentication+combine.swift in Sources */,
18061813
707A3BF225B0A4F0000D215C /* ParseAuthentication.swift in Sources */,
18071814
70D1BE7425BB43EB00A42E7C /* BaseConfig.swift in Sources */,
1815+
918CED5A2684C74000CFDC83 /* ParseLiveQuery+combine.swift in Sources */,
18081816
70386A0725D9718C0048EC1B /* Data+hexString.swift in Sources */,
18091817
F97B466024D9C7B500F4A88B /* KeychainStore.swift in Sources */,
18101818
70170A452656B02D0070C905 /* ParseAnalytics.swift in Sources */,
@@ -2030,6 +2038,7 @@
20302038
7044C1CB25C5B2B10011F6E7 /* ParseAuthentication+combine.swift in Sources */,
20312039
707A3BF425B0A4F0000D215C /* ParseAuthentication.swift in Sources */,
20322040
70D1BE7625BB43EB00A42E7C /* BaseConfig.swift in Sources */,
2041+
918CED5C2684C74000CFDC83 /* ParseLiveQuery+combine.swift in Sources */,
20332042
70386A0925D9718C0048EC1B /* Data+hexString.swift in Sources */,
20342043
F97B460524D9C6F200F4A88B /* NoBody.swift in Sources */,
20352044
70170A472656B02D0070C905 /* ParseAnalytics.swift in Sources */,
@@ -2122,6 +2131,7 @@
21222131
7044C1CA25C5B2B10011F6E7 /* ParseAuthentication+combine.swift in Sources */,
21232132
707A3BF325B0A4F0000D215C /* ParseAuthentication.swift in Sources */,
21242133
70D1BE7525BB43EB00A42E7C /* BaseConfig.swift in Sources */,
2134+
918CED5B2684C74000CFDC83 /* ParseLiveQuery+combine.swift in Sources */,
21252135
70386A0825D9718C0048EC1B /* Data+hexString.swift in Sources */,
21262136
F97B460424D9C6F200F4A88B /* NoBody.swift in Sources */,
21272137
70170A462656B02D0070C905 /* ParseAnalytics.swift in Sources */,
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
//
2+
// ParseLiveQuery+combine.swift
3+
// ParseSwift
4+
//
5+
// Created by Corey Baker on 6/24/21.
6+
// Copyright © 2021 Parse Community. All rights reserved.
7+
//
8+
9+
#if canImport(Combine)
10+
import Foundation
11+
import Combine
12+
13+
@available(macOS 10.15, iOS 13.0, macCatalyst 13.0, watchOS 6.0, tvOS 13.0, *)
14+
extension ParseLiveQuery {
15+
// MARK: Functions - Combine
16+
17+
/**
18+
Manually establish a connection to the `ParseLiveQuery` Server.. Publishes when established.
19+
- parameter isUserWantsToConnect: Specifies if the user is calling this function. Defaults to `true`.
20+
- returns: A publisher that eventually produces a single value and then finishes or fails.
21+
*/
22+
public func openPublisher(isUserWantsToConnect: Bool = true) -> Future<Void, Error> {
23+
Future { promise in
24+
self.open(isUserWantsToConnect: isUserWantsToConnect) { error in
25+
guard let error = error else {
26+
promise(.success(()))
27+
return
28+
}
29+
promise(.failure(error))
30+
}
31+
}
32+
}
33+
34+
/**
35+
Sends a ping frame from the client side. Publishes when a pong is received from the
36+
server endpoint.
37+
- returns: A publisher that eventually produces a single value and then finishes or fails.
38+
*/
39+
public func sendPingPublisher() -> Future<Void, Error> {
40+
Future { promise in
41+
self.sendPing { error in
42+
guard let error = error else {
43+
promise(.success(()))
44+
return
45+
}
46+
promise(.failure(error))
47+
}
48+
}
49+
}
50+
}
51+
#endif

0 commit comments

Comments
 (0)