Skip to content

Commit 5ac1227

Browse files
committed
Adding properties model hydration
1 parent 6cc636f commit 5ac1227

File tree

4 files changed

+18
-11
lines changed

4 files changed

+18
-11
lines changed

iOS_SDK/OneSignalSDK/OneSignalUser/Source/OSIdentityModel.swift

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,6 @@ class OSIdentityModel: OSModel {
8787

8888
public override func hydrateModel(_ response: [String: Any]) {
8989
print("🔥 OSIdentityModel hydrateModel()")
90-
// TODO: Update Model properties with the response
9190
for property in response {
9291
switch property.key {
9392
case "external_id":

iOS_SDK/OneSignalSDK/OneSignalUser/Source/OSPropertiesModel.swift

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727

2828
import Foundation
2929
import OneSignalOSCore
30+
import OneSignalCore
3031

3132
struct OSPropertiesDeltas {
3233
let sessionTime: NSNumber?
@@ -110,6 +111,15 @@ class OSPropertiesModel: OSModel {
110111
}
111112

112113
public override func hydrateModel(_ response: [String: Any]) {
113-
// TODO: Update Model properties with the response
114+
for property in response {
115+
switch property.key {
116+
case "language":
117+
self.language = property.value as? String
118+
case "tags":
119+
self.tags = property.value as? [String : String] ?? [:]
120+
default:
121+
OneSignalLog.onesignalLog(.LL_DEBUG, message: "Not hydrating properties model for property: \(property)")
122+
}
123+
}
114124
}
115125
}

iOS_SDK/OneSignalSDK/OneSignalUser/Source/OSPropertyOperationExecutor.swift

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -106,16 +106,12 @@ class OSPropertyOperationExecutor: OSOperationExecutor {
106106
}
107107
print("🔥 OSPropertyOperationExecutor: executeUpdatePropertiesRequest making request: \(request)")
108108
OneSignalClient.shared().execute(request) { result in
109-
// Mock a response
110-
let response = ["language": "en"]
111109

112110
// On success, remove request from cache, and hydrate model
113111
// For example, if app restarts and we read in operations between sending this off and getting the response
114112
self.requestQueue.removeAll(where: { $0 == request})
115113
OneSignalUserDefaults.initShared().saveCodeableData(forKey: OS_PROPERTIES_EXECUTOR_REQUEST_QUEUE_KEY, withValue: self.requestQueue)
116114

117-
request.modelToUpdate.hydrate(response)
118-
119115
} onFailure: { error in
120116
// On failure, retry logic, but order of operations matters
121117
}

iOS_SDK/OneSignalSDK/OneSignalUser/Source/OSUserRequests.swift

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -61,12 +61,12 @@ class OSUserExecutor {
6161
}
6262
}
6363

64-
static func parseCreateUserResponse(response: [AnyHashable:Any], request: OSRequestCreateUser) {
64+
static func parseFetchUserResponse(response: [AnyHashable:Any], identityModel: OSIdentityModel) {
6565
// On success, check if the current user is the same as the one in the request
6666
// If user has changed, don't hydrate, except for push subscription
6767
let modelInStore = OneSignalUserManagerImpl.sharedInstance.identityModelStore.getModel(key: OS_IDENTITY_MODEL_KEY)
6868

69-
guard modelInStore?.modelId == request.identityModel.modelId else {
69+
guard modelInStore?.modelId == identityModel.modelId else {
7070
return
7171
}
7272
if let identityObject = parseIdentityObjectResponse(response) {
@@ -111,7 +111,7 @@ class OSUserExecutor {
111111
}
112112
OneSignalClient.shared().execute(request) { response in
113113
if let response = response {
114-
parseCreateUserResponse(response: response, request: request)
114+
parseFetchUserResponse(response: response, identityModel: request.identityModel)
115115
}
116116
executePendingRequests()
117117
} onFailure: { error in
@@ -198,8 +198,10 @@ class OSUserExecutor {
198198
return
199199
}
200200

201-
OneSignalClient.shared().execute(request) { _ in
202-
// Hydrate (replace) models
201+
OneSignalClient.shared().execute(request) { response in
202+
if let response = response {
203+
parseFetchUserResponse(response: response, identityModel: request.identityModel)
204+
}
203205
} onFailure: { _ in
204206
// What?
205207
}

0 commit comments

Comments
 (0)