Skip to content

Commit 3f750aa

Browse files
committed
Remove code related to the previous user state
1 parent 834bbca commit 3f750aa

File tree

17 files changed

+49
-114
lines changed

17 files changed

+49
-114
lines changed

Examples/OneSignalDemo/app/src/main/java/com/onesignal/sdktest/application/MainApplication.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,9 @@
2626
import com.onesignal.sdktest.constant.Text;
2727
import com.onesignal.sdktest.notification.OneSignalNotificationSender;
2828
import com.onesignal.sdktest.util.SharedPreferenceUtil;
29+
import com.onesignal.user.IUserStateObserver;
30+
import com.onesignal.user.UserChangedState;
31+
import com.onesignal.user.UserState;
2932

3033
import org.json.JSONObject;
3134

@@ -116,6 +119,14 @@ public void onWillDisplay(@NonNull INotificationWillDisplayEvent event) {
116119
}
117120
});
118121

122+
OneSignal.getUser().addObserver(new IUserStateObserver() {
123+
@Override
124+
public void onUserStateChange(@NonNull UserChangedState state) {
125+
UserState currentUserState = state.getCurrent();
126+
Log.v(Tag.LOG_TAG, "onUserStateChange fired " + currentUserState.toJSONObject());
127+
}
128+
});
129+
119130
OneSignal.getInAppMessages().setPaused(true);
120131
OneSignal.getLocation().setShared(false);
121132

Examples/OneSignalDemo/app/src/main/java/com/onesignal/sdktest/model/MainActivityViewModel.java

Lines changed: 1 addition & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
import android.app.Activity;
44
import android.content.Context;
55
import com.google.android.material.appbar.AppBarLayout;
6-
76
import androidx.annotation.NonNull;
87
import androidx.annotation.Nullable;
98
import androidx.annotation.RequiresApi;
@@ -13,10 +12,8 @@
1312
import androidx.recyclerview.widget.LinearLayoutManager;
1413
import androidx.recyclerview.widget.RecyclerView;
1514
import androidx.appcompat.widget.Toolbar;
16-
1715
import android.content.Intent;
1816
import android.os.Build;
19-
import android.util.Log;
2017
import android.util.Pair;
2118
import android.view.View;
2219
import android.view.ViewTreeObserver;
@@ -25,17 +22,10 @@
2522
import android.widget.RelativeLayout;
2623
import android.widget.Switch;
2724
import android.widget.TextView;
28-
2925
import com.onesignal.Continue;
3026
import com.onesignal.OneSignal;
31-
import com.onesignal.debug.internal.logging.Logging;
3227
import com.onesignal.sdktest.adapter.SubscriptionRecyclerViewAdapter;
33-
import com.onesignal.user.IUserStateObserver;
34-
import com.onesignal.user.UserChangedState;
35-
import com.onesignal.user.UserState;
36-
import com.onesignal.user.subscriptions.IEmailSubscription;
3728
import com.onesignal.user.subscriptions.IPushSubscription;
38-
import com.onesignal.user.subscriptions.ISmsSubscription;
3929
import com.onesignal.sdktest.R;
4030
import com.onesignal.sdktest.activity.SecondaryActivity;
4131
import com.onesignal.sdktest.adapter.InAppMessageRecyclerViewAdapter;
@@ -61,13 +51,12 @@
6151
import com.onesignal.user.subscriptions.ISubscription;
6252
import com.onesignal.user.subscriptions.IPushSubscriptionObserver;
6353
import com.onesignal.user.subscriptions.PushSubscriptionChangedState;
64-
6554
import java.util.ArrayList;
6655
import java.util.HashMap;
6756
import java.util.Map;
6857

6958
@RequiresApi(api = Build.VERSION_CODES.N)
70-
public class MainActivityViewModel implements ActivityViewModel, IPushSubscriptionObserver, IUserStateObserver {
59+
public class MainActivityViewModel implements ActivityViewModel, IPushSubscriptionObserver {
7160

7261
private Animate animate;
7362
private Dialog dialog;
@@ -297,7 +286,6 @@ public ActivityViewModel onActivityCreated(Context context) {
297286
triggerArrayList = new ArrayList<>();
298287

299288
OneSignal.getUser().getPushSubscription().addObserver(this);
300-
OneSignal.getUser().addObserver(this);
301289
return this;
302290
}
303291

@@ -506,17 +494,6 @@ public void onPushSubscriptionChange(@NonNull PushSubscriptionChangedState state
506494
refreshSubscriptionState();
507495
}
508496

509-
@Override
510-
public void onUserStateChange(@NonNull UserChangedState state) {
511-
UserState currentState = state.getCurrent();
512-
UserState prevState = state.getPrevious();
513-
Logging.debug("onUserStateChanged; previous onesignalId: " + String.valueOf(prevState.getOnesignalId())
514-
+ ", previous externalId: " + String.valueOf(prevState.getExternalId())
515-
+ ", current onesignalId: " + String.valueOf(currentState.getOnesignalId())
516-
+ ", current externalId: " + String.valueOf(currentState.getExternalId()),
517-
null);
518-
}
519-
520497
private class DummySubscription implements ISubscription {
521498

522499
private String _id;

OneSignalSDK/onesignal/core/src/main/java/com/onesignal/common/IDManager.kt

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -26,19 +26,4 @@ object IDManager {
2626
* @return true if the [id] provided was created via [createLocalId].
2727
*/
2828
fun isLocalId(id: String): Boolean = id.startsWith(LOCAL_PREFIX)
29-
30-
/**
31-
* Get non local ID or null.
32-
*
33-
* @param id The ID to test.
34-
*
35-
* @return [id] or null if the [id] provided was created via [createLocalId].
36-
*/
37-
fun getNonLocalIDOrNull(id: String): String? {
38-
if (isLocalId(id)) {
39-
return null
40-
}
41-
42-
return id
43-
}
4429
}

OneSignalSDK/onesignal/core/src/main/java/com/onesignal/common/events/EventProducer.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ open class EventProducer<THandler> : IEventNotifier<THandler> {
4444
*
4545
* @param callback The callback will be invoked for each subscribed handler, allowing you to call the handler.
4646
*/
47-
open fun fire(callback: (THandler) -> Unit) {
47+
fun fire(callback: (THandler) -> Unit) {
4848
synchronized(subscribers) {
4949
for (s in subscribers) {
5050
callback(s)

OneSignalSDK/onesignal/core/src/main/java/com/onesignal/common/modeling/IModelChangedHandler.kt

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -49,14 +49,3 @@ class ModelChangedArgs(
4949
*/
5050
val newValue: Any?,
5151
)
52-
53-
/**
54-
* The arguments passed to the [IModelChangedHandler] handler when subscribed via [Model.subscribe]
55-
*/
56-
class ModelReplacedArgs<TModel>(
57-
/**
58-
* The full model in its previous and current state.
59-
*/
60-
val oldModel: TModel,
61-
val newModel: TModel,
62-
) where TModel : Model

OneSignalSDK/onesignal/core/src/main/java/com/onesignal/common/modeling/ISingletonModelStoreChangeHandler.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ interface ISingletonModelStoreChangeHandler<TModel> where TModel : Model {
1212
* @param tag The tag which identifies how/why the model was replaced.
1313
*/
1414
fun onModelReplaced(
15-
model: ModelReplacedArgs<TModel>,
15+
model: TModel,
1616
tag: String,
1717
)
1818

OneSignalSDK/onesignal/core/src/main/java/com/onesignal/common/modeling/SingletonModelStore.kt

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,12 +38,10 @@ open class SingletonModelStore<TModel>(
3838
tag: String,
3939
) {
4040
synchronized(replaceLock) {
41-
val oldModel = this.store.create() ?: throw Exception("Unable to initialize model from store $store")
42-
oldModel.initializeFromModel(singletonId, this.model)
4341
val existingModel = this.model
4442
existingModel.initializeFromModel(singletonId, model)
4543
store.persist()
46-
changeSubscription.fire { it.onModelReplaced(ModelReplacedArgs(oldModel, existingModel), tag) }
44+
changeSubscription.fire { it.onModelReplaced(existingModel, tag) }
4745
}
4846
}
4947

OneSignalSDK/onesignal/core/src/main/java/com/onesignal/core/internal/config/impl/ConfigModelStoreListener.kt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import com.onesignal.common.exceptions.BackendException
44
import com.onesignal.common.modeling.ISingletonModelStoreChangeHandler
55
import com.onesignal.common.modeling.ModelChangeTags
66
import com.onesignal.common.modeling.ModelChangedArgs
7-
import com.onesignal.common.modeling.ModelReplacedArgs
87
import com.onesignal.common.threading.suspendifyOnThread
98
import com.onesignal.core.internal.backend.IParamsBackendService
109
import com.onesignal.core.internal.config.ConfigModel
@@ -44,7 +43,7 @@ internal class ConfigModelStoreListener(
4443
}
4544

4645
override fun onModelReplaced(
47-
model: ModelReplacedArgs<ConfigModel>,
46+
model: ConfigModel,
4847
tag: String,
4948
) {
5049
if (tag != ModelChangeTags.NORMAL) {

OneSignalSDK/onesignal/core/src/main/java/com/onesignal/core/internal/operations/listeners/SingletonModelStoreListener.kt

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ import com.onesignal.common.modeling.ISingletonModelStoreChangeHandler
55
import com.onesignal.common.modeling.Model
66
import com.onesignal.common.modeling.ModelChangeTags
77
import com.onesignal.common.modeling.ModelChangedArgs
8-
import com.onesignal.common.modeling.ModelReplacedArgs
98
import com.onesignal.common.modeling.SingletonModelStore
109
import com.onesignal.core.internal.operations.IOperationRepo
1110
import com.onesignal.core.internal.operations.Operation
@@ -31,7 +30,7 @@ internal abstract class SingletonModelStoreListener<TModel>(
3130
}
3231

3332
override fun onModelReplaced(
34-
model: ModelReplacedArgs<TModel>,
33+
model: TModel,
3534
tag: String,
3635
) {
3736
if (tag != ModelChangeTags.NORMAL) {
@@ -63,7 +62,7 @@ internal abstract class SingletonModelStoreListener<TModel>(
6362
*
6463
* @return The operation to enqueue when the model has been replaced, or null if no operation should be enqueued.
6564
*/
66-
abstract fun getReplaceOperation(model: ModelReplacedArgs<TModel>): Operation?
65+
abstract fun getReplaceOperation(model: TModel): Operation?
6766

6867
/**
6968
* Called when the model has been updated.

OneSignalSDK/onesignal/core/src/main/java/com/onesignal/user/IUserManager.kt

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,16 @@ interface IUserManager {
2525
*/
2626
val pushSubscription: IPushSubscription
2727

28+
/**
29+
* onesignalId, null if this is current unavailable
30+
*/
31+
val onesignalId: String
32+
33+
/**
34+
* externalId, null if this is current unavailable
35+
*/
36+
val externalId: String
37+
2838
/**
2939
* Set the 2-character language either as a detected language or explicitly set for this user. See
3040
* See [Supported Languages | OneSignal](https://documentation.onesignal.com/docs/language-localization#what-languages-are-supported)

OneSignalSDK/onesignal/core/src/main/java/com/onesignal/user/UserChangedState.kt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,10 @@ package com.onesignal.user
33
import org.json.JSONObject
44

55
class UserChangedState(
6-
val previous: UserState,
76
val current: UserState,
87
) {
98
fun toJSONObject(): JSONObject {
109
return JSONObject()
11-
.put("previous", previous.toJSONObject())
1210
.put("current", current.toJSONObject())
1311
}
1412
}

OneSignalSDK/onesignal/core/src/main/java/com/onesignal/user/UserState.kt

Lines changed: 8 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,25 @@
11
package com.onesignal.user
22

3-
import com.onesignal.common.IDManager
43
import org.json.JSONObject
54

65
/**
76
* A user state.
87
*/
9-
class UserState {
8+
class UserState(
109
/**
11-
* The unique identifier for your OneSignal account. This will be a null string until the
10+
* The unique identifier for your OneSignal account. This will be an empty string until the
1211
* user has been successfully logged in on the backend and assigned an ID.
1312
* Use [addObserver] to be notified when the [onesignalId] has been successfully assigned.
1413
*/
15-
val onesignalId: String?
16-
14+
val onesignalId: String,
1715
/**
18-
* The external identifier that you use to identify users. This will be an null string
19-
* until the user has been successfully logged in on the backend and
20-
* assigned an ID. Use [addObserver] to be notified when the [externalId] has
16+
* The external identifier that you use to identify users. This will be an empty string
17+
* until the user has been successfully logged in on the backend and assigned an ID.
18+
* Use [addObserver] to be notified when the [externalId] has
2119
* been successfully assigned.
2220
*/
23-
val externalId: String?
24-
25-
constructor(onesignalId: String?, externalId: String?) {
26-
if (onesignalId == null) {
27-
this.onesignalId = null
28-
} else {
29-
this.onesignalId = IDManager.getNonLocalIDOrNull(onesignalId)
30-
}
31-
this.externalId = externalId
32-
}
33-
21+
val externalId: String,
22+
) {
3423
fun toJSONObject(): JSONObject {
3524
return JSONObject()
3625
.put("onesignalId", onesignalId)

OneSignalSDK/onesignal/core/src/main/java/com/onesignal/user/internal/UserManager.kt

Lines changed: 8 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ import com.onesignal.common.OneSignalUtils
55
import com.onesignal.common.events.EventProducer
66
import com.onesignal.common.modeling.ISingletonModelStoreChangeHandler
77
import com.onesignal.common.modeling.ModelChangedArgs
8-
import com.onesignal.common.modeling.ModelReplacedArgs
98
import com.onesignal.core.internal.language.ILanguageContext
109
import com.onesignal.debug.LogLevel
1110
import com.onesignal.debug.internal.logging.Logging
@@ -28,11 +27,11 @@ internal open class UserManager(
2827
private val _propertiesModelStore: PropertiesModelStore,
2928
private val _languageContext: ILanguageContext,
3029
) : IUserManager, ISingletonModelStoreChangeHandler<IdentityModel> {
31-
val onesignalId: String?
32-
get() = IDManager.getNonLocalIDOrNull(_identityModel.onesignalId)
30+
override val onesignalId: String
31+
get() = if (IDManager.isLocalId(_identityModel.onesignalId)) "" else _identityModel.onesignalId
3332

34-
val externalId: String?
35-
get() = _identityModel.externalId
33+
override val externalId: String
34+
get() = _identityModel.externalId ?: ""
3635

3736
val aliases: Map<String, String>
3837
get() = _identityModel.filter { it.key != IdentityModel::id.name }.toMap()
@@ -246,33 +245,18 @@ internal open class UserManager(
246245
}
247246

248247
override fun onModelReplaced(
249-
args: ModelReplacedArgs<IdentityModel>,
248+
model: IdentityModel,
250249
tag: String,
251-
) {
252-
val oldUserState = UserState(args.oldModel[IdentityConstants.ONESIGNAL_ID], args.oldModel.externalId)
253-
val newUserState = UserState(args.newModel.onesignalId, args.newModel.externalId)
254-
255-
// do not fire the callback if onesignalId is null or the new model is identical to the old model
256-
if (newUserState.onesignalId == null ||
257-
oldUserState.onesignalId.equals(newUserState.onesignalId) &&
258-
oldUserState.externalId.equals(newUserState.externalId)
259-
) {
260-
return
261-
}
262-
this.changeHandlersNotifier.fire {
263-
it.onUserStateChange(UserChangedState(oldUserState, newUserState))
264-
}
265-
}
250+
) { }
266251

267252
override fun onModelUpdated(
268253
args: ModelChangedArgs,
269254
tag: String,
270255
) {
271-
if (args.property.equals(IdentityConstants.ONESIGNAL_ID)) {
272-
val oldUserState = UserState(args.oldValue.toString(), externalId)
256+
if (args.property == IdentityConstants.ONESIGNAL_ID) {
273257
val newUserState = UserState(args.newValue.toString(), externalId)
274258
this.changeHandlersNotifier.fire {
275-
it.onUserStateChange(UserChangedState(oldUserState, newUserState))
259+
it.onUserStateChange(UserChangedState(newUserState))
276260
}
277261
}
278262
Logging.debug(args.property)

OneSignalSDK/onesignal/core/src/main/java/com/onesignal/user/internal/operations/impl/listeners/IdentityModelStoreListener.kt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package com.onesignal.user.internal.operations.impl.listeners
22

3-
import com.onesignal.common.modeling.ModelReplacedArgs
43
import com.onesignal.core.internal.config.ConfigModelStore
54
import com.onesignal.core.internal.operations.IOperationRepo
65
import com.onesignal.core.internal.operations.Operation
@@ -15,7 +14,7 @@ internal class IdentityModelStoreListener(
1514
opRepo: IOperationRepo,
1615
private val _configModelStore: ConfigModelStore,
1716
) : SingletonModelStoreListener<IdentityModel>(store, opRepo) {
18-
override fun getReplaceOperation(model: ModelReplacedArgs<IdentityModel>): Operation? {
17+
override fun getReplaceOperation(model: IdentityModel): Operation? {
1918
// when the identity model is replaced, nothing to do on the backend. Already handled via login process.
2019
return null
2120
}

OneSignalSDK/onesignal/core/src/main/java/com/onesignal/user/internal/operations/impl/listeners/PropertiesModelStoreListener.kt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package com.onesignal.user.internal.operations.impl.listeners
22

3-
import com.onesignal.common.modeling.ModelReplacedArgs
43
import com.onesignal.core.internal.config.ConfigModelStore
54
import com.onesignal.core.internal.operations.IOperationRepo
65
import com.onesignal.core.internal.operations.Operation
@@ -16,7 +15,7 @@ internal class PropertiesModelStoreListener(
1615
opRepo: IOperationRepo,
1716
private val _configModelStore: ConfigModelStore,
1817
) : SingletonModelStoreListener<PropertiesModel>(store, opRepo) {
19-
override fun getReplaceOperation(model: ModelReplacedArgs<PropertiesModel>): Operation? {
18+
override fun getReplaceOperation(model: PropertiesModel): Operation? {
2019
// when the property model is replaced, nothing to do on the backend. Already handled via login process.
2120
return null
2221
}

OneSignalSDK/onesignal/in-app-messages/src/main/java/com/onesignal/inAppMessages/internal/InAppMessagesManager.kt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ import com.onesignal.common.events.EventProducer
88
import com.onesignal.common.exceptions.BackendException
99
import com.onesignal.common.modeling.ISingletonModelStoreChangeHandler
1010
import com.onesignal.common.modeling.ModelChangedArgs
11-
import com.onesignal.common.modeling.ModelReplacedArgs
1211
import com.onesignal.common.threading.suspendifyOnThread
1312
import com.onesignal.core.internal.application.IApplicationService
1413
import com.onesignal.core.internal.config.ConfigModel
@@ -185,7 +184,7 @@ internal class InAppMessagesManager(
185184
}
186185

187186
override fun onModelReplaced(
188-
model: ModelReplacedArgs<ConfigModel>,
187+
model: ConfigModel,
189188
tag: String,
190189
) {
191190
suspendifyOnThread {

0 commit comments

Comments
 (0)