You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* When the SDK hydrates users, it will trigger the subscription model store's `replaceAll` method. This will remove the current push subscription model and immediately add a new push subscription model. The Subscription Manager was removing the current push subscription and then adding a new push subscription that it manages. When the new one is added, the old one is removed and any observers are transferred over.
* However, because the old one was already removed by the time the new one is added, observers are lost. The [onModelAdded] already triggers an add and remove, so we should not remove in the [onModelRemoved] event.
* These 2 events are always together. There is no current usage where only [onModelRemoved] is called for a push subscription model. Even on 404s, push subscription models are not removed.
Copy file name to clipboardExpand all lines: OneSignalSDK/onesignal/core/src/main/java/com/onesignal/user/internal/subscriptions/impl/SubscriptionManager.kt
+8Lines changed: 8 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -190,6 +190,14 @@ internal class SubscriptionManager(
190
190
model:SubscriptionModel,
191
191
tag:String,
192
192
) {
193
+
// Do not remove the push subscription: we need to keep the existing push subscription and its observers
194
+
// This push subscription will immediately be replaced by the new one in the [onModelAdded] event
195
+
// The [onModelRemoved] event for a push subscription model should always be followed by a [onModelAdded]
196
+
// event with a new push subscription model. On 404s, no push subscription models are removed.
197
+
if (model.type ==SubscriptionType.PUSH) {
198
+
return
199
+
}
200
+
193
201
val subscription = subscriptions.collection.firstOrNull { it.id == model.id }
0 commit comments