Skip to content

Commit e433a4f

Browse files
committed
Let UserManager refresh timezone changes on focus
Let the UserManager refresh the changes to properties model, instead of SessionListener. The SubscriptionManager already refreshes the push subscription.
1 parent 6018f4d commit e433a4f

File tree

4 files changed

+15
-11
lines changed

4 files changed

+15
-11
lines changed

OneSignalSDK/onesignal/core/src/main/java/com/onesignal/session/internal/session/impl/SessionListener.kt

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ import com.onesignal.session.internal.session.ISessionService
1111
import com.onesignal.user.internal.identity.IdentityModelStore
1212
import com.onesignal.user.internal.operations.TrackSessionEndOperation
1313
import com.onesignal.user.internal.operations.TrackSessionStartOperation
14-
import com.onesignal.user.internal.properties.PropertiesModelStore
1514

1615
/**
1716
* The [SessionListener] is responsible for subscribing itself as an [ISessionLifecycleHandler]
@@ -34,16 +33,13 @@ internal class SessionListener(
3433
private val _sessionService: ISessionService,
3534
private val _configModelStore: ConfigModelStore,
3635
private val _identityModelStore: IdentityModelStore,
37-
private val _propertiesModelStore: PropertiesModelStore,
3836
private val _outcomeEventsController: IOutcomeEventsController,
3937
) : IStartableService, ISessionLifecycleHandler {
4038
override fun start() {
4139
_sessionService.subscribe(this)
4240
}
4341

4442
override fun onSessionStarted() {
45-
// Detect any user updates to send with the TrackSessionStartOperation
46-
_propertiesModelStore.model.update()
4743
_operationRepo.enqueue(TrackSessionStartOperation(_configModelStore.model.appId, _identityModelStore.model.onesignalId), true)
4844
}
4945

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

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,12 @@ package com.onesignal.user.internal
22

33
import com.onesignal.common.IDManager
44
import com.onesignal.common.OneSignalUtils
5+
import com.onesignal.common.TimeUtils
56
import com.onesignal.common.events.EventProducer
67
import com.onesignal.common.modeling.ISingletonModelStoreChangeHandler
78
import com.onesignal.common.modeling.ModelChangedArgs
9+
import com.onesignal.core.internal.application.IApplicationLifecycleHandler
10+
import com.onesignal.core.internal.application.IApplicationService
811
import com.onesignal.core.internal.language.ILanguageContext
912
import com.onesignal.debug.LogLevel
1013
import com.onesignal.debug.internal.logging.Logging
@@ -26,7 +29,8 @@ internal open class UserManager(
2629
private val _identityModelStore: IdentityModelStore,
2730
private val _propertiesModelStore: PropertiesModelStore,
2831
private val _languageContext: ILanguageContext,
29-
) : IUserManager, ISingletonModelStoreChangeHandler<IdentityModel> {
32+
private val _applicationService: IApplicationService,
33+
) : IUserManager, IApplicationLifecycleHandler, ISingletonModelStoreChangeHandler<IdentityModel> {
3034
override val onesignalId: String
3135
get() = if (IDManager.isLocalId(_identityModel.onesignalId)) "" else _identityModel.onesignalId
3236

@@ -55,6 +59,7 @@ internal open class UserManager(
5559
}
5660

5761
init {
62+
_applicationService.addApplicationLifecycleHandler(this)
5863
_identityModelStore.subscribe(this)
5964
}
6065

@@ -260,4 +265,11 @@ internal open class UserManager(
260265
}
261266
}
262267
}
268+
269+
override fun onFocus(firedOnSubscribe: Boolean) {
270+
// Detect any user properties updates that changed
271+
_propertiesModel.timezone = TimeUtils.getTimeZoneId()
272+
}
273+
274+
override fun onUnfocused() { }
263275
}

OneSignalSDK/onesignal/core/src/main/java/com/onesignal/user/internal/operations/impl/executors/RefreshUserOperationExecutor.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.onesignal.user.internal.operations.impl.executors
22

33
import com.onesignal.common.NetworkUtils
4+
import com.onesignal.common.TimeUtils
45
import com.onesignal.common.exceptions.BackendException
56
import com.onesignal.common.modeling.ModelChangeTags
67
import com.onesignal.core.internal.config.ConfigModelStore
@@ -90,7 +91,7 @@ internal class RefreshUserOperationExecutor(
9091
}
9192

9293
// No longer hydrate timezone from remote, set locally
93-
propertiesModel.update()
94+
propertiesModel.timezone = TimeUtils.getTimeZoneId()
9495

9596
val subscriptionModels = mutableListOf<SubscriptionModel>()
9697
for (subscription in response.subscriptions) {

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

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

3-
import com.onesignal.common.TimeUtils
43
import com.onesignal.common.modeling.MapModel
54
import com.onesignal.common.modeling.Model
65
import org.json.JSONObject
@@ -123,8 +122,4 @@ class PropertiesModel : Model() {
123122

124123
return null
125124
}
126-
127-
fun update() {
128-
timezone = TimeUtils.getTimeZoneId()
129-
}
130125
}

0 commit comments

Comments
 (0)