1
- // Copyright (c) 2021 PassiveLogic, Inc.
2
-
3
- import RxSwift
4
-
5
1
/// Abstract event stream class - Should be overridden for actual implementations
6
2
open class EventStream < Element> {
7
3
public init ( ) { }
@@ -10,74 +6,3 @@ open class EventStream<Element> {
10
6
fatalError ( " This function should be overridden by implementing classes " )
11
7
}
12
8
}
13
-
14
-
15
- // TODO: Put in separate GraphQLRxSwift package
16
-
17
- // EventStream wrapper for Observable
18
- public class ObservableEventStream < Element> : EventStream < Element > {
19
- public var observable : Observable < Element >
20
- init ( _ observable: Observable < Element > ) {
21
- self . observable = observable
22
- }
23
- override open func map< To> ( _ closure: @escaping ( Element ) throws -> To ) -> EventStream < To > {
24
- return ObservableEventStream < To > ( observable. map ( closure) )
25
- }
26
- }
27
- // Convenience types
28
- public typealias ObservableSourceEventStream = ObservableEventStream < Future < Any > >
29
- public typealias ObservableSubscriptionEventStream = ObservableEventStream < Future < GraphQLResult > >
30
-
31
- extension Observable {
32
- // Convenience method for wrapping Observables in EventStreams
33
- public func toEventStream( ) -> ObservableEventStream < Element > {
34
- return ObservableEventStream ( self )
35
- }
36
- }
37
-
38
-
39
- // TODO: Delete notes below
40
-
41
- // Protocol attempts
42
-
43
- //protocol EventStreamP {
44
- // associatedtype Element
45
- // func transform<To>(_ closure: @escaping (Element) throws -> To) -> EventStreamP // How to specify that returned associated type is 'To'
46
- //}
47
- //extension Observable: EventStreamP {
48
- // func transform<To>(_ closure: @escaping (Element) throws -> To) -> EventStreamP {
49
- // return self.map(closure)
50
- // }
51
- //}
52
-
53
- // Try defining element in closure return
54
- //protocol EventStreamP {
55
- // associatedtype Element
56
- // func transform<ResultStream: EventStreamP>(_ closure: @escaping (Element) throws -> ResultStream.Element) -> ResultStream
57
- //}
58
- //extension Observable: EventStreamP {
59
- // func transform<ResultStream: EventStreamP>(_ closure: @escaping (Element) throws -> ResultStream.Element) -> ResultStream {
60
- // return self.map(closure) // Observable<ResultStream.Element> isn't recognized as a ResultStream
61
- // }
62
- //}
63
-
64
- // Try absorbing generic type into function
65
- //protocol EventStreamP {
66
- // func transform<From, To>(_ closure: @escaping (From) throws -> To) -> EventStreamP
67
- //}
68
- //extension Observable: EventStreamP {
69
- // func transform<From, To>(_ closure: @escaping (From) throws -> To) -> EventStreamP {
70
- // return self.map(closure) // Doesn't recognize that Observable.Element is the same as From
71
- // }
72
- //}
73
-
74
- // Try opaque types
75
- //protocol EventStreamP {
76
- // associatedtype Element
77
- // func transform<To>(_ closure: @escaping (Element) throws -> To) -> some EventStreamP
78
- //}
79
- //extension Observable: EventStreamP {
80
- // func transform<To>(_ closure: @escaping (Element) throws -> To) -> some EventStreamP {
81
- // return self.map(closure)
82
- // }
83
- //}
0 commit comments