@@ -44,7 +44,6 @@ import com.onesignal.user.internal.identity.IdentityModel
4444import com.onesignal.user.internal.identity.IdentityModelStore
4545import com.onesignal.user.internal.operations.LoginUserFromSubscriptionOperation
4646import com.onesignal.user.internal.operations.LoginUserOperation
47- import com.onesignal.user.internal.operations.TransferSubscriptionOperation
4847import com.onesignal.user.internal.properties.PropertiesModel
4948import com.onesignal.user.internal.properties.PropertiesModelStore
5049import com.onesignal.user.internal.subscriptions.SubscriptionModel
@@ -467,10 +466,8 @@ internal class OneSignalImp : IOneSignal, IServiceProvider {
467466 // to the queue.
468467 val currentPushSubscription = subscriptionModelStore!! .list().firstOrNull { it.id == configModel!! .pushSubscriptionId }
469468 val newPushSubscription = SubscriptionModel ()
470- val localSubscriptionID = IDManager .createLocalId()
471- val currentSubscriptionID = currentPushSubscription?.id ? : localSubscriptionID
472469
473- newPushSubscription.id = currentSubscriptionID
470+ newPushSubscription.id = currentPushSubscription?.id ? : IDManager .createLocalId()
474471 newPushSubscription.type = SubscriptionType .PUSH
475472 newPushSubscription.optedIn = currentPushSubscription?.optedIn ? : true
476473 newPushSubscription.address = currentPushSubscription?.address ? : " "
@@ -480,6 +477,11 @@ internal class OneSignalImp : IOneSignal, IServiceProvider {
480477 newPushSubscription.carrier = DeviceUtils .getCarrierName(services.getService<IApplicationService >().appContext) ? : " "
481478 newPushSubscription.appVersion = AndroidUtils .getAppVersion(services.getService<IApplicationService >().appContext) ? : " "
482479
480+ // ensure we always know this devices push subscription ID
481+ configModel!! .pushSubscriptionId = newPushSubscription.id
482+
483+ subscriptions.add(newPushSubscription)
484+
483485 // The next 4 lines makes this user the effective user locally. We clear the subscriptions
484486 // first as a `NO_PROPOGATE` change because we don't want to drive deleting the cleared subscriptions
485487 // on the backend. Once cleared we can then setup the new identity/properties model, and add
@@ -488,24 +490,11 @@ internal class OneSignalImp : IOneSignal, IServiceProvider {
488490 identityModelStore!! .replace(identityModel)
489491 propertiesModelStore!! .replace(propertiesModel)
490492
491- var changeTag = ModelChangeTags .NO_PROPOGATE
492-
493- if (! suppressBackendOperation) {
494- if (currentPushSubscription?.id != null && identityModel.externalId != null ) {
495- // add a transfer-subscription operation when switching user
496- operationRepo!! .enqueue(TransferSubscriptionOperation (configModel!! .appId, currentPushSubscription.id, sdkId))
497- } else {
498- // reset subscription when calling logout or login for the first time
499- newPushSubscription.id = localSubscriptionID
500- changeTag = ModelChangeTags .NORMAL
501- }
493+ if (suppressBackendOperation) {
494+ subscriptionModelStore!! .replaceAll(subscriptions, ModelChangeTags .NO_PROPOGATE )
495+ } else {
496+ subscriptionModelStore!! .replaceAll(subscriptions)
502497 }
503-
504- // ensure we always know this devices push subscription ID
505- configModel!! .pushSubscriptionId = newPushSubscription.id
506-
507- subscriptions.add(newPushSubscription)
508- subscriptionModelStore!! .replaceAll(subscriptions, changeTag)
509498 }
510499
511500 override fun <T > hasService (c : Class <T >): Boolean = services.hasService(c)
0 commit comments