Skip to content

Commit 13d7885

Browse files
committed
adding OneSignal-Subscription-Id for properties deltas updates
We fail prepareForExecution if we don't have the push sub id but need to update properties deltas
1 parent 96083d4 commit 13d7885

File tree

1 file changed

+23
-3
lines changed

1 file changed

+23
-3
lines changed

iOS_SDK/OneSignalSDK/OneSignalUser/Source/OSUserRequests.swift

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -583,7 +583,9 @@ class OSRequestUpdateProperties: OneSignalRequest, OSUserRequest {
583583
let identityModel: OSIdentityModel
584584

585585
func prepareForExecution() -> Bool {
586-
if let onesignalId = identityModel.onesignalId, let appId = OneSignalConfigManager.getAppId() {
586+
if let onesignalId = identityModel.onesignalId,
587+
let appId = OneSignalConfigManager.getAppId(),
588+
addPushSubscriptionIdToAdditionalHeadersIfNeeded() {
587589
self.addJWTHeader(identityModel: identityModel)
588590
self.path = "apps/\(appId)/users/by/\(OS_ONESIGNAL_ID)/\(onesignalId)"
589591
return true
@@ -593,6 +595,23 @@ class OSRequestUpdateProperties: OneSignalRequest, OSUserRequest {
593595
return false
594596
}
595597
}
598+
599+
func addPushSubscriptionIdToAdditionalHeadersIfNeeded() -> Bool {
600+
guard let parameters = self.parameters else {
601+
return true
602+
}
603+
if parameters["deltas"] != nil {
604+
if let pushSubscriptionId = OneSignalUserManagerImpl.sharedInstance.pushSubscriptionId {
605+
var additionalHeaders = self.additionalHeaders ?? [String:String]()
606+
additionalHeaders["OneSignal-Subscription-Id"] = pushSubscriptionId
607+
self.additionalHeaders = additionalHeaders
608+
return true
609+
} else {
610+
return false
611+
}
612+
}
613+
return true
614+
}
596615

597616
init(properties: [String: Any], deltas: [String: Any]?, refreshDeviceMetadata: Bool?, modelToUpdate: OSPropertiesModel, identityModel: OSIdentityModel) {
598617
self.modelToUpdate = modelToUpdate
@@ -602,9 +621,10 @@ class OSRequestUpdateProperties: OneSignalRequest, OSUserRequest {
602621

603622
var params: [String: Any] = [:]
604623
params["properties"] = properties
605-
params["deltas"] = deltas
606624
params["refresh_device_metadata"] = refreshDeviceMetadata
607-
625+
if let deltas = deltas {
626+
params["deltas"] = deltas
627+
}
608628
self.parameters = params
609629
self.method = PATCH
610630
_ = prepareForExecution() // sets the path property

0 commit comments

Comments
 (0)