1
- import Combine
2
1
import ComposableArchitecture
3
2
import CoreMotion
3
+ import ReactiveSwift
4
4
5
5
@available ( iOS 4 . 0 , * )
6
6
@available ( macCatalyst 13 . 0 , * )
@@ -96,93 +96,94 @@ extension MotionManager {
96
96
}
97
97
} ,
98
98
startAccelerometerUpdates: { id, queue in
99
- return Effect . run { subscriber in
99
+ return Effect { subscriber, lifetime in
100
100
guard let manager = managers [ id]
101
101
else {
102
102
couldNotFindMotionManager ( id: id)
103
- return AnyCancellable { }
103
+ return
104
104
}
105
105
guard accelerometerUpdatesSubscribers [ id] == nil
106
- else { return AnyCancellable { } }
106
+ else { return }
107
107
108
108
accelerometerUpdatesSubscribers [ id] = subscriber
109
109
manager. startAccelerometerUpdates ( to: queue) { data, error in
110
110
if let data = data {
111
- subscriber. send ( . init( data) )
111
+ subscriber. send ( value : . init( data) )
112
112
} else if let error = error {
113
- subscriber. send ( completion : . failure ( error) )
113
+ subscriber. send ( error : error)
114
114
}
115
115
}
116
- return AnyCancellable {
116
+
117
+ lifetime += AnyDisposable {
117
118
manager. stopAccelerometerUpdates ( )
118
119
}
119
120
}
120
121
} ,
121
122
startDeviceMotionUpdates: { id, frame, queue in
122
- return Effect . run { subscriber in
123
+ return Effect { subscriber, Lifetime in
123
124
guard let manager = managers [ id]
124
125
else {
125
126
couldNotFindMotionManager ( id: id)
126
- return AnyCancellable { }
127
+ return
127
128
}
128
129
guard deviceMotionUpdatesSubscribers [ id] == nil
129
- else { return AnyCancellable { } }
130
+ else { return }
130
131
131
132
deviceMotionUpdatesSubscribers [ id] = subscriber
132
133
manager. startDeviceMotionUpdates ( using: frame, to: queue) { data, error in
133
134
if let data = data {
134
- subscriber. send ( . init( data) )
135
+ subscriber. send ( value : . init( data) )
135
136
} else if let error = error {
136
- subscriber. send ( completion : . failure ( error) )
137
+ subscriber. send ( error : error)
137
138
}
138
139
}
139
- return AnyCancellable {
140
+ Lifetime += AnyDisposable {
140
141
manager. stopDeviceMotionUpdates ( )
141
142
}
142
143
}
143
144
} ,
144
145
startGyroUpdates: { id, queue in
145
- return Effect . run { subscriber in
146
+ return Effect { subscriber, lifetime in
146
147
guard let manager = managers [ id]
147
148
else {
148
149
couldNotFindMotionManager ( id: id)
149
- return AnyCancellable { }
150
+ return
150
151
}
151
152
guard deviceGyroUpdatesSubscribers [ id] == nil
152
- else { return AnyCancellable { } }
153
+ else { return }
153
154
154
155
deviceGyroUpdatesSubscribers [ id] = subscriber
155
156
manager. startGyroUpdates ( to: queue) { data, error in
156
157
if let data = data {
157
- subscriber. send ( . init( data) )
158
+ subscriber. send ( value : . init( data) )
158
159
} else if let error = error {
159
- subscriber. send ( completion : . failure ( error) )
160
+ subscriber. send ( error : error)
160
161
}
161
162
}
162
- return AnyCancellable {
163
+ lifetime += AnyDisposable {
163
164
manager. stopGyroUpdates ( )
164
165
}
165
166
}
166
167
} ,
167
168
startMagnetometerUpdates: { id, queue in
168
- return Effect . run { subscriber in
169
+ return Effect { subscriber, lifetime in
169
170
guard let manager = managers [ id]
170
171
else {
171
172
couldNotFindMotionManager ( id: id)
172
- return AnyCancellable { }
173
+ return
173
174
}
174
175
guard deviceMagnetometerUpdatesSubscribers [ id] == nil
175
- else { return AnyCancellable { } }
176
+ else { return }
176
177
177
178
deviceMagnetometerUpdatesSubscribers [ id] = subscriber
178
179
manager. startMagnetometerUpdates ( to: queue) { data, error in
179
180
if let data = data {
180
- subscriber. send ( . init( data) )
181
+ subscriber. send ( value : . init( data) )
181
182
} else if let error = error {
182
- subscriber. send ( completion : . failure ( error) )
183
+ subscriber. send ( error : error)
183
184
}
184
185
}
185
- return AnyCancellable {
186
+ lifetime += AnyDisposable {
186
187
manager. stopMagnetometerUpdates ( )
187
188
}
188
189
}
@@ -195,7 +196,7 @@ extension MotionManager {
195
196
return
196
197
}
197
198
manager. stopAccelerometerUpdates ( )
198
- accelerometerUpdatesSubscribers [ id] ? . send ( completion : . finished )
199
+ accelerometerUpdatesSubscribers [ id] ? . sendCompleted ( )
199
200
accelerometerUpdatesSubscribers [ id] = nil
200
201
}
201
202
} ,
@@ -207,7 +208,7 @@ extension MotionManager {
207
208
return
208
209
}
209
210
manager. stopDeviceMotionUpdates ( )
210
- deviceMotionUpdatesSubscribers [ id] ? . send ( completion : . finished )
211
+ deviceMotionUpdatesSubscribers [ id] ? . sendCompleted ( )
211
212
deviceMotionUpdatesSubscribers [ id] = nil
212
213
}
213
214
} ,
@@ -219,7 +220,7 @@ extension MotionManager {
219
220
return
220
221
}
221
222
manager. stopGyroUpdates ( )
222
- deviceGyroUpdatesSubscribers [ id] ? . send ( completion : . finished )
223
+ deviceGyroUpdatesSubscribers [ id] ? . sendCompleted ( )
223
224
deviceGyroUpdatesSubscribers [ id] = nil
224
225
}
225
226
} ,
@@ -231,19 +232,19 @@ extension MotionManager {
231
232
return
232
233
}
233
234
manager. stopMagnetometerUpdates ( )
234
- deviceMagnetometerUpdatesSubscribers [ id] ? . send ( completion : . finished )
235
+ deviceMagnetometerUpdatesSubscribers [ id] ? . sendCompleted ( )
235
236
deviceMagnetometerUpdatesSubscribers [ id] = nil
236
237
}
237
238
} )
238
239
}
239
240
240
241
private var accelerometerUpdatesSubscribers :
241
- [ AnyHashable : Effect < AccelerometerData , Error > . Subscriber ] = [ : ]
242
- private var deviceMotionUpdatesSubscribers : [ AnyHashable : Effect < DeviceMotion , Error > . Subscriber ] =
242
+ [ AnyHashable : Signal < AccelerometerData , Error > . Observer ] = [ : ]
243
+ private var deviceMotionUpdatesSubscribers : [ AnyHashable : Signal < DeviceMotion , Error > . Observer ] =
243
244
[ : ]
244
- private var deviceGyroUpdatesSubscribers : [ AnyHashable : Effect < GyroData , Error > . Subscriber ] = [ : ]
245
+ private var deviceGyroUpdatesSubscribers : [ AnyHashable : Signal < GyroData , Error > . Observer ] = [ : ]
245
246
private var deviceMagnetometerUpdatesSubscribers :
246
- [ AnyHashable : Effect < MagnetometerData , Error > . Subscriber ] = [ : ]
247
+ [ AnyHashable : Signal < MagnetometerData , Error > . Observer ] = [ : ]
247
248
248
249
@available ( iOS 4 . 0 , * )
249
250
@available ( macCatalyst 13 . 0 , * )
0 commit comments