Skip to content

Commit eeb702c

Browse files
author
Rodrigo Gomez Palacio
committed
Update executors to set offsets on consistency manager
Motivation: executors make the update or create requests and get back an offset which is saved in the consistency manager
1 parent 1fae5f2 commit eeb702c

File tree

3 files changed

+41
-4
lines changed

3 files changed

+41
-4
lines changed

iOS_SDK/OneSignalSDK/OneSignalUser/Source/Executors/OSPropertyOperationExecutor.swift

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -245,7 +245,7 @@ class OSPropertyOperationExecutor: OSOperationExecutor {
245245
OSBackgroundTaskManager.beginBackgroundTask(backgroundTaskIdentifier)
246246
}
247247

248-
OneSignalCoreImpl.sharedClient().execute(request) { _ in
248+
OneSignalCoreImpl.sharedClient().execute(request) { response in
249249
// On success, remove request from cache, and we do need to hydrate
250250
// TODO: We need to hydrate after all ? What why ?
251251
self.dispatchQueue.async {
@@ -255,6 +255,14 @@ class OSPropertyOperationExecutor: OSOperationExecutor {
255255
OSBackgroundTaskManager.endBackgroundTask(backgroundTaskIdentifier)
256256
}
257257
}
258+
if let onesignalId = request.identityModel.onesignalId {
259+
if let rywToken = response?["ryw_token"] as? String
260+
{
261+
OSConsistencyManager.shared.setRywToken(id: onesignalId, key: OSIamFetchOffsetKey.userUpdate, value: rywToken)
262+
} else {
263+
OSConsistencyManager.shared.resolveConditionsWithID(id: OSIamFetchReadyCondition.CONDITIONID)
264+
}
265+
}
258266
} onFailure: { error in
259267
OneSignalLog.onesignalLog(.LL_ERROR, message: "OSPropertyOperationExecutor update properties request failed with error: \(error.debugDescription)")
260268
self.dispatchQueue.async {

iOS_SDK/OneSignalSDK/OneSignalUser/Source/Executors/OSSubscriptionOperationExecutor.swift

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -284,19 +284,30 @@ class OSSubscriptionOperationExecutor: OSOperationExecutor {
284284
}
285285

286286
OneSignalLog.onesignalLog(.LL_VERBOSE, message: "OSSubscriptionOperationExecutor: executeCreateSubscriptionRequest making request: \(request)")
287-
OneSignalCoreImpl.sharedClient().execute(request) { result in
287+
OneSignalCoreImpl.sharedClient().execute(request) { response in
288288
// On success, remove request from cache (even if not hydrating model), and hydrate model
289289
self.dispatchQueue.async {
290290
self.addRequestQueue.removeAll(where: { $0 == request})
291291
OneSignalUserDefaults.initShared().saveCodeableData(forKey: OS_SUBSCRIPTION_EXECUTOR_ADD_REQUEST_QUEUE_KEY, withValue: self.addRequestQueue)
292292

293-
guard let response = result?["subscription"] as? [String: Any] else {
293+
guard let response = response?["subscription"] as? [String: Any] else {
294294
OneSignalLog.onesignalLog(.LL_ERROR, message: "Unabled to parse response to create subscription request")
295295
if inBackground {
296296
OSBackgroundTaskManager.endBackgroundTask(backgroundTaskIdentifier)
297297
}
298298
return
299299
}
300+
301+
let onesignalId = OneSignalUserManagerImpl.sharedInstance.onesignalId;
302+
if let onesignalId = request.identityModel.onesignalId {
303+
if let rywToken = response["ryw_token"] as? String
304+
{
305+
OSConsistencyManager.shared.setRywToken(id: onesignalId, key: OSIamFetchOffsetKey.subscriptionUpdate, value: rywToken)
306+
} else {
307+
OSConsistencyManager.shared.resolveConditionsWithID(id: OSIamFetchReadyCondition.CONDITIONID)
308+
}
309+
}
310+
300311
request.subscriptionModel.hydrate(response)
301312
if inBackground {
302313
OSBackgroundTaskManager.endBackgroundTask(backgroundTaskIdentifier)
@@ -393,7 +404,7 @@ class OSSubscriptionOperationExecutor: OSOperationExecutor {
393404
OSBackgroundTaskManager.beginBackgroundTask(backgroundTaskIdentifier)
394405
}
395406

396-
OneSignalCoreImpl.sharedClient().execute(request) { _ in
407+
OneSignalCoreImpl.sharedClient().execute(request) { response in
397408
// On success, remove request from cache. No model hydration occurs.
398409
// For example, if app restarts and we read in operations between sending this off and getting the response
399410
self.dispatchQueue.async {
@@ -403,6 +414,15 @@ class OSSubscriptionOperationExecutor: OSOperationExecutor {
403414
OSBackgroundTaskManager.endBackgroundTask(backgroundTaskIdentifier)
404415
}
405416
}
417+
let onesignalId = OneSignalUserManagerImpl.sharedInstance.onesignalId;
418+
if let onesignalId = onesignalId {
419+
if let rywToken = response?["ryw_token"] as? String
420+
{
421+
OSConsistencyManager.shared.setRywToken(id: onesignalId, key: OSIamFetchOffsetKey.subscriptionUpdate, value: rywToken)
422+
} else {
423+
OSConsistencyManager.shared.resolveConditionsWithID(id: OSIamFetchReadyCondition.CONDITIONID)
424+
}
425+
}
406426
} onFailure: { error in
407427
OneSignalLog.onesignalLog(.LL_ERROR, message: "OSSubscriptionOperationExecutor update subscription request failed with error: \(error.debugDescription)")
408428
self.dispatchQueue.async {

iOS_SDK/OneSignalSDK/OneSignalUser/Source/Executors/OSUserExecutor.swift

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -258,6 +258,15 @@ extension OSUserExecutor {
258258
} else {
259259
self.executePendingRequests()
260260
}
261+
262+
if let onesignalId = request.identityModel.onesignalId {
263+
if let rywToken = response["ryw_token"] as? String
264+
{
265+
OSConsistencyManager.shared.setRywToken(id: onesignalId, key: OSIamFetchOffsetKey.userUpdate, value: rywToken)
266+
} else {
267+
OSConsistencyManager.shared.resolveConditionsWithID(id: OSIamFetchReadyCondition.CONDITIONID)
268+
}
269+
}
261270
}
262271
OSOperationRepo.sharedInstance.paused = false
263272
} onFailure: { error in

0 commit comments

Comments
 (0)