Skip to content

Commit d189a2f

Browse files
jinliu9508jkasten2
authored andcommitted
Infrastructure change around JWT: models, model stores
1 parent f7f82ed commit d189a2f

File tree

5 files changed

+45
-2
lines changed

5 files changed

+45
-2
lines changed

Examples/OneSignalDemo/app/src/main/java/com/onesignal/sdktest/util/ProfileUtil.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ public enum FieldType {
1313
ALIAS("Alias"),
1414
EMAIL("Email"),
1515
SMS("SMS"),
16+
JWT("JWT"),
1617
EXTERNAL_USER_ID("External User Id"),
1718

1819
TAG("Tags"),
@@ -97,6 +98,10 @@ public static boolean isSMSValid(TextInputLayout smsTextInputLayout) {
9798
return true;
9899
}
99100

101+
private static boolean isJWTValid(TextInputLayout jwtTextInputLayout) {
102+
return !jwtTextInputLayout.getEditText().toString().isEmpty();
103+
}
104+
100105
private static boolean isExternalUserIdValid(TextInputLayout externalUserIdTextInputLayout) {
101106
externalUserIdTextInputLayout.setErrorEnabled(false);
102107
if (externalUserIdTextInputLayout.getEditText() != null) {
@@ -137,6 +142,8 @@ static boolean isContentValid(FieldType field, TextInputLayout alertDialogTextIn
137142
return isEmailValid(alertDialogTextInputLayout);
138143
case SMS:
139144
return isSMSValid(alertDialogTextInputLayout);
145+
case JWT:
146+
return isJWTValid(alertDialogTextInputLayout);
140147
case EXTERNAL_USER_ID:
141148
return isExternalUserIdValid(alertDialogTextInputLayout);
142149
case TAG:

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

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package com.onesignal.core.internal.config
22

3+
import com.onesignal.common.events.EventProducer
34
import com.onesignal.common.modeling.Model
5+
import com.onesignal.core.internal.backend.ParamsObject
46
import org.json.JSONArray
57
import org.json.JSONObject
68

@@ -319,6 +321,20 @@ class ConfigModel : Model() {
319321

320322
return null
321323
}
324+
325+
var fetchParamsNotifier = EventProducer<FetchParamsObserver>()
326+
327+
fun addFetchParamsObserver(observer: FetchParamsObserver) {
328+
fetchParamsNotifier.subscribe(observer)
329+
}
330+
331+
fun removeFetchParamsObserver(observer: FetchParamsObserver) {
332+
fetchParamsNotifier.unsubscribe(observer)
333+
}
334+
335+
fun notifyFetchParams(params: ParamsObject) {
336+
fetchParamsNotifier.fire { it.onParamsFetched(params) }
337+
}
322338
}
323339

324340
/**
@@ -425,3 +441,7 @@ class FCMConfigModel(parentModel: Model, parentProperty: String) : Model(parentM
425441
setOptStringProperty(::apiKey.name, value)
426442
}
427443
}
444+
445+
interface FetchParamsObserver {
446+
fun onParamsFetched(params: ParamsObject)
447+
}

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ internal class ConfigModelStoreListener(
7272
// copy current model into new model, then override with what comes down.
7373
val config = ConfigModel()
7474
config.initializeFromModel(null, _configModelStore.model)
75-
75+
config.fetchParamsNotifier = _configModelStore.model.fetchParamsNotifier
7676
config.isInitializedWithRemote = true
7777

7878
// these are always copied from the backend params
@@ -105,6 +105,7 @@ internal class ConfigModelStoreListener(
105105

106106
_configModelStore.replace(config, ModelChangeTags.HYDRATE)
107107
success = true
108+
config.notifyFetchParams(params)
108109
} catch (ex: BackendException) {
109110
if (ex.statusCode == HttpURLConnection.HTTP_FORBIDDEN) {
110111
Logging.fatal("403 error getting OneSignal params, omitting further retries!")

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

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.onesignal.user.internal.identity
22

33
import com.onesignal.common.modeling.MapModel
4+
import com.onesignal.common.modeling.ModelChangeTags
45
import com.onesignal.user.internal.backend.IdentityConstants
56

67
/**
@@ -29,4 +30,14 @@ class IdentityModel : MapModel<String>() {
2930
set(value) {
3031
setOptStringProperty(IdentityConstants.EXTERNAL_ID, value)
3132
}
33+
34+
/**
35+
* A JWT token generated on your server and given to a OneSignal Client SDK so it can manage
36+
* a specific User, their Subscriptions, and Identities (AKA add/remove Aliases).
37+
*/
38+
var jwtToken: String?
39+
get() = getOptStringProperty(IdentityConstants.JWT_TOKEN)
40+
set(value) {
41+
setOptStringProperty(IdentityConstants.JWT_TOKEN, value, ModelChangeTags.NO_PROPOGATE)
42+
}
3243
}

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

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,8 @@ import com.onesignal.core.internal.preferences.IPreferencesService
66

77
open class IdentityModelStore(prefs: IPreferencesService) : SingletonModelStore<IdentityModel>(
88
SimpleModelStore({ IdentityModel() }, "identity", prefs),
9-
)
9+
) {
10+
fun invalidateJwt() {
11+
model.jwtToken = ""
12+
}
13+
}

0 commit comments

Comments
 (0)