Skip to content

Commit 674fd4a

Browse files
authored
Merge pull request #1726 from OneSignal/user-model/xfer-subscription-api-align
[User Model] Transfer Subscription on user create
2 parents 7f06356 + 2412676 commit 674fd4a

File tree

24 files changed

+181
-101
lines changed

24 files changed

+181
-101
lines changed

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

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -408,9 +408,8 @@ private void setupAppLayout() {
408408
@Override
409409
public void onSuccess(String update) {
410410
if (update != null && !update.isEmpty()) {
411-
OneSignal.login(update, Continue.with(r -> {
412-
refreshState();
413-
}));
411+
OneSignal.login(update);
412+
refreshState();
414413
}
415414
}
416415

@@ -422,9 +421,8 @@ public void onFailure() {
422421
});
423422

424423
logoutUserButton.setOnClickListener(v -> {
425-
OneSignal.logout(Continue.with(r -> {
426-
refreshState();
427-
}));
424+
OneSignal.logout();
425+
refreshState();
428426
});
429427
}
430428

@@ -791,7 +789,7 @@ private void setupLocationSharedSwitch() {
791789

792790
private void setupPromptLocationButton() {
793791
promptLocationButton.setOnClickListener(v -> {
794-
OneSignal.getLocation().requestPermission(true, Continue.none());
792+
OneSignal.getLocation().requestPermission(Continue.none());
795793
});
796794
}
797795

@@ -823,7 +821,7 @@ private void setupSubscriptionSwitch() {
823821

824822
private void setupPromptPushButton() {
825823
promptPushButton.setOnClickListener(v -> {
826-
OneSignal.getNotifications().requestPermission(true, Continue.none());
824+
OneSignal.getUser().getPushSubscription().optIn();
827825
});
828826
}
829827

OneSignalSDK/onesignal/core/src/main/java/com/onesignal/IOneSignal.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -104,14 +104,14 @@ interface IOneSignal {
104104
* trust for the login operation. Required when identity verification has been enabled. See
105105
* [Identity Verification | OneSignal](https://documentation.onesignal.com/docs/identity-verification)
106106
*/
107-
suspend fun login(externalId: String, jwtBearerToken: String? = null)
108-
suspend fun login(externalId: String) = login(externalId, null)
107+
fun login(externalId: String, jwtBearerToken: String? = null)
108+
fun login(externalId: String) = login(externalId, null)
109109

110110
/**
111111
* Logout the user previously logged in via [login]. The [User] property now references
112112
* a new device-scoped user. A device-scoped user has no user identity that can later
113113
* be retrieved, except through this device as long as the app remains installed and the app
114114
* data is not cleared.
115115
*/
116-
suspend fun logout()
116+
fun logout()
117117
}

OneSignalSDK/onesignal/core/src/main/java/com/onesignal/OneSignal.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,7 @@ object OneSignal {
145145
* @param externalId The external ID of the user that is to be logged in.
146146
*/
147147
@JvmStatic
148-
suspend fun login(externalId: String) = oneSignal.login(externalId)
148+
fun login(externalId: String) = oneSignal.login(externalId)
149149

150150
/**
151151
* Login to OneSignal under the user identified by the [externalId] provided. The act of
@@ -169,7 +169,7 @@ object OneSignal {
169169
* [Identity Verification | OneSignal](https://documentation.onesignal.com/docs/identity-verification)
170170
*/
171171
@JvmStatic
172-
suspend fun login(externalId: String, jwtBearerToken: String? = null) = oneSignal.login(externalId, jwtBearerToken)
172+
fun login(externalId: String, jwtBearerToken: String? = null) = oneSignal.login(externalId, jwtBearerToken)
173173

174174
/**
175175
* Logout the user previously logged in via [login]. The [User] property now references
@@ -178,7 +178,7 @@ object OneSignal {
178178
* data is not cleared.
179179
*/
180180
@JvmStatic
181-
suspend fun logout() = oneSignal.logout()
181+
fun logout() = oneSignal.logout()
182182

183183
private val oneSignal: IOneSignal by lazy {
184184
OneSignalImp()

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

Lines changed: 25 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -161,33 +161,33 @@ open class Model(
161161
*/
162162
protected open fun createListForProperty(property: String, jsonArray: JSONArray): List<*>? = null
163163

164-
inline fun <reified T : Enum<T>> setEnumProperty(name: String, value: T, tag: String = ModelChangeTags.NORMAL) = setOptEnumProperty(name, value, tag)
165-
fun <T> setMapModelProperty(name: String, value: MapModel<T>, tag: String = ModelChangeTags.NORMAL) = setOptMapModelProperty(name, value, tag)
166-
fun <T> setListProperty(name: String, value: List<T>, tag: String = ModelChangeTags.NORMAL) = setOptListProperty(name, value, tag)
167-
fun setStringProperty(name: String, value: String, tag: String = ModelChangeTags.NORMAL) = setOptStringProperty(name, value, tag)
168-
fun setBooleanProperty(name: String, value: Boolean, tag: String = ModelChangeTags.NORMAL) = setOptBooleanProperty(name, value, tag)
169-
fun setLongProperty(name: String, value: Long, tag: String = ModelChangeTags.NORMAL) = setOptLongProperty(name, value, tag)
170-
fun setDoubleProperty(name: String, value: Double, tag: String = ModelChangeTags.NORMAL) = setOptDoubleProperty(name, value, tag)
171-
fun setFloatProperty(name: String, value: Float, tag: String = ModelChangeTags.NORMAL) = setOptFloatProperty(name, value, tag)
172-
fun setIntProperty(name: String, value: Int, tag: String = ModelChangeTags.NORMAL) = setOptIntProperty(name, value, tag)
173-
fun setBigDecimalProperty(name: String, value: BigDecimal, tag: String = ModelChangeTags.NORMAL) = setOptBigDecimalProperty(name, value, tag)
174-
fun setAnyProperty(name: String, value: Any, tag: String = ModelChangeTags.NORMAL) = setOptAnyProperty(name, value, tag)
175-
176-
inline fun <reified T : Enum<T>> setOptEnumProperty(name: String, value: T?, tag: String = ModelChangeTags.NORMAL) = setOptAnyProperty(name, value?.toString(), tag)
177-
fun <T> setOptMapModelProperty(name: String, value: MapModel<T>?, tag: String = ModelChangeTags.NORMAL) = setOptAnyProperty(name, value, tag)
178-
fun <T> setOptListProperty(name: String, value: List<T>?, tag: String = ModelChangeTags.NORMAL) = setOptAnyProperty(name, value, tag)
179-
fun setOptStringProperty(name: String, value: String?, tag: String = ModelChangeTags.NORMAL) = setOptAnyProperty(name, value, tag)
180-
fun setOptBooleanProperty(name: String, value: Boolean?, tag: String = ModelChangeTags.NORMAL) = setOptAnyProperty(name, value, tag)
181-
fun setOptLongProperty(name: String, value: Long?, tag: String = ModelChangeTags.NORMAL) = setOptAnyProperty(name, value, tag)
182-
fun setOptDoubleProperty(name: String, value: Double?, tag: String = ModelChangeTags.NORMAL) = setOptAnyProperty(name, value, tag)
183-
fun setOptFloatProperty(name: String, value: Float?, tag: String = ModelChangeTags.NORMAL) = setOptAnyProperty(name, value, tag)
184-
fun setOptIntProperty(name: String, value: Int?, tag: String = ModelChangeTags.NORMAL) = setOptAnyProperty(name, value, tag)
185-
fun setOptBigDecimalProperty(name: String, value: BigDecimal?, tag: String = ModelChangeTags.NORMAL) = setOptAnyProperty(name, value?.toString(), tag)
186-
187-
fun setOptAnyProperty(name: String, value: Any?, tag: String = ModelChangeTags.NORMAL) {
164+
inline fun <reified T : Enum<T>> setEnumProperty(name: String, value: T, tag: String = ModelChangeTags.NORMAL, forceChange: Boolean = false) = setOptEnumProperty(name, value, tag, forceChange)
165+
fun <T> setMapModelProperty(name: String, value: MapModel<T>, tag: String = ModelChangeTags.NORMAL, forceChange: Boolean = false) = setOptMapModelProperty(name, value, tag, forceChange)
166+
fun <T> setListProperty(name: String, value: List<T>, tag: String = ModelChangeTags.NORMAL, forceChange: Boolean = false) = setOptListProperty(name, value, tag, forceChange)
167+
fun setStringProperty(name: String, value: String, tag: String = ModelChangeTags.NORMAL, forceChange: Boolean = false) = setOptStringProperty(name, value, tag, forceChange)
168+
fun setBooleanProperty(name: String, value: Boolean, tag: String = ModelChangeTags.NORMAL, forceChange: Boolean = false) = setOptBooleanProperty(name, value, tag, forceChange)
169+
fun setLongProperty(name: String, value: Long, tag: String = ModelChangeTags.NORMAL, forceChange: Boolean = false) = setOptLongProperty(name, value, tag, forceChange)
170+
fun setDoubleProperty(name: String, value: Double, tag: String = ModelChangeTags.NORMAL, forceChange: Boolean = false) = setOptDoubleProperty(name, value, tag, forceChange)
171+
fun setFloatProperty(name: String, value: Float, tag: String = ModelChangeTags.NORMAL, forceChange: Boolean = false) = setOptFloatProperty(name, value, tag, forceChange)
172+
fun setIntProperty(name: String, value: Int, tag: String = ModelChangeTags.NORMAL, forceChange: Boolean = false) = setOptIntProperty(name, value, tag, forceChange)
173+
fun setBigDecimalProperty(name: String, value: BigDecimal, tag: String = ModelChangeTags.NORMAL, forceChange: Boolean = false) = setOptBigDecimalProperty(name, value, tag, forceChange)
174+
fun setAnyProperty(name: String, value: Any, tag: String = ModelChangeTags.NORMAL, forceChange: Boolean = false) = setOptAnyProperty(name, value, tag, forceChange)
175+
176+
inline fun <reified T : Enum<T>> setOptEnumProperty(name: String, value: T?, tag: String = ModelChangeTags.NORMAL, forceChange: Boolean = false) = setOptAnyProperty(name, value?.toString(), tag, forceChange)
177+
fun <T> setOptMapModelProperty(name: String, value: MapModel<T>?, tag: String = ModelChangeTags.NORMAL, forceChange: Boolean = false) = setOptAnyProperty(name, value, tag, forceChange)
178+
fun <T> setOptListProperty(name: String, value: List<T>?, tag: String = ModelChangeTags.NORMAL, forceChange: Boolean = false) = setOptAnyProperty(name, value, tag, forceChange)
179+
fun setOptStringProperty(name: String, value: String?, tag: String = ModelChangeTags.NORMAL, forceChange: Boolean = false) = setOptAnyProperty(name, value, tag, forceChange)
180+
fun setOptBooleanProperty(name: String, value: Boolean?, tag: String = ModelChangeTags.NORMAL, forceChange: Boolean = false) = setOptAnyProperty(name, value, tag, forceChange)
181+
fun setOptLongProperty(name: String, value: Long?, tag: String = ModelChangeTags.NORMAL, forceChange: Boolean = false) = setOptAnyProperty(name, value, tag, forceChange)
182+
fun setOptDoubleProperty(name: String, value: Double?, tag: String = ModelChangeTags.NORMAL, forceChange: Boolean = false) = setOptAnyProperty(name, value, tag, forceChange)
183+
fun setOptFloatProperty(name: String, value: Float?, tag: String = ModelChangeTags.NORMAL, forceChange: Boolean = false) = setOptAnyProperty(name, value, tag, forceChange)
184+
fun setOptIntProperty(name: String, value: Int?, tag: String = ModelChangeTags.NORMAL, forceChange: Boolean = false) = setOptAnyProperty(name, value, tag, forceChange)
185+
fun setOptBigDecimalProperty(name: String, value: BigDecimal?, tag: String = ModelChangeTags.NORMAL, forceChange: Boolean = false) = setOptAnyProperty(name, value?.toString(), tag, forceChange)
186+
187+
fun setOptAnyProperty(name: String, value: Any?, tag: String = ModelChangeTags.NORMAL, forceChange: Boolean = false) {
188188
val oldValue = data[name]
189189

190-
if (oldValue == value) {
190+
if (oldValue == value && !forceChange) {
191191
return
192192
}
193193

OneSignalSDK/onesignal/core/src/main/java/com/onesignal/core/internal/background/impl/BackgroundManager.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@ internal class BackgroundManager(
141141
if (_nextScheduledSyncTimeMs != 0L &&
142142
_time.currentTimeMillis + delayMs > _nextScheduledSyncTimeMs
143143
) {
144-
Logging.verbose("OSSyncService scheduleSyncTask already update scheduled nextScheduledSyncTimeMs: $_nextScheduledSyncTimeMs")
144+
Logging.debug("OSSyncService scheduleSyncTask already update scheduled nextScheduledSyncTimeMs: $_nextScheduledSyncTimeMs")
145145
return
146146
}
147147
if (delayMs < 5000) delayMs = 5000
@@ -180,7 +180,7 @@ internal class BackgroundManager(
180180

181181
@RequiresApi(21)
182182
private fun scheduleSyncServiceAsJob(delayMs: Long) {
183-
Logging.verbose("OSBackgroundSync scheduleSyncServiceAsJob:atTime: $delayMs")
183+
Logging.debug("OSBackgroundSync scheduleSyncServiceAsJob:atTime: $delayMs")
184184
if (isJobIdRunning()) {
185185
Logging.verbose("OSBackgroundSync scheduleSyncServiceAsJob Scheduler already running!")
186186
// If a JobScheduler is schedule again while running it will stop current job. We will schedule again when finished.

OneSignalSDK/onesignal/core/src/main/java/com/onesignal/core/internal/http/impl/HttpClient.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ internal class HttpClient(
112112
con.setRequestProperty("Accept", OS_ACCEPT_HEADER)
113113

114114
val subscriptionId = _configModelStore.model.pushSubscriptionId
115-
if(subscriptionId != null && subscriptionId.isNotEmpty()) {
115+
if (subscriptionId != null && subscriptionId.isNotEmpty()) {
116116
con.setRequestProperty("OneSignal-Subscription-Id", subscriptionId)
117117
}
118118

OneSignalSDK/onesignal/core/src/main/java/com/onesignal/core/internal/operations/impl/OperationModelStore.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import com.onesignal.user.internal.operations.SetTagOperation
1515
import com.onesignal.user.internal.operations.TrackPurchaseOperation
1616
import com.onesignal.user.internal.operations.TrackSessionEndOperation
1717
import com.onesignal.user.internal.operations.TrackSessionStartOperation
18+
import com.onesignal.user.internal.operations.TransferSubscriptionOperation
1819
import com.onesignal.user.internal.operations.UpdateSubscriptionOperation
1920
import com.onesignal.user.internal.operations.impl.executors.IdentityOperationExecutor
2021
import com.onesignal.user.internal.operations.impl.executors.LoginUserOperationExecutor
@@ -45,6 +46,7 @@ internal class OperationModelStore(prefs: IPreferencesService) : ModelStore<Oper
4546
SubscriptionOperationExecutor.CREATE_SUBSCRIPTION -> CreateSubscriptionOperation()
4647
SubscriptionOperationExecutor.UPDATE_SUBSCRIPTION -> UpdateSubscriptionOperation()
4748
SubscriptionOperationExecutor.DELETE_SUBSCRIPTION -> DeleteSubscriptionOperation()
49+
SubscriptionOperationExecutor.TRANSFER_SUBSCRIPTION -> TransferSubscriptionOperation()
4850
LoginUserOperationExecutor.LOGIN_USER -> LoginUserOperation()
4951
RefreshUserOperationExecutor.REFRESH_USER -> RefreshUserOperation()
5052
UpdateUserOperationExecutor.SET_TAG -> SetTagOperation()

0 commit comments

Comments
 (0)