Skip to content

Commit 3321784

Browse files
authored
Merge pull request #153 from rees46/feat/popup-in-tracking-response
Popup in tracking response
2 parents 24f69b8 + f0903dc commit 3321784

File tree

2 files changed

+47
-5
lines changed

2 files changed

+47
-5
lines changed

personalization-sdk/src/main/kotlin/com/personalization/di/SdkModule.kt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -80,11 +80,13 @@ class SdkModule {
8080
fun provideTrackEventManager(
8181
getRecommendedByUseCase: GetRecommendedByUseCase,
8282
setRecommendedByUseCase: SetRecommendedByUseCase,
83-
sendNetworkMethodUseCase: SendNetworkMethodUseCase
83+
sendNetworkMethodUseCase: SendNetworkMethodUseCase,
84+
inAppNotificationManager: InAppNotificationManager
8485
): TrackEventManager = TrackEventManagerImpl(
8586
getRecommendedByUseCase = getRecommendedByUseCase,
8687
setRecommendedByUseCase = setRecommendedByUseCase,
87-
sendNetworkMethodUseCase = sendNetworkMethodUseCase
88+
sendNetworkMethodUseCase = sendNetworkMethodUseCase,
89+
inAppNotificationManager = inAppNotificationManager,
8890
)
8991

9092
@Singleton

personalization-sdk/src/main/kotlin/com/personalization/features/trackEvent/impl/TrackEventManagerImpl.kt

Lines changed: 43 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,22 @@ package com.personalization.features.trackEvent.impl
33
import com.personalization.Params
44
import com.personalization.Params.TrackEvent
55
import com.personalization.api.OnApiCallbackListener
6+
import com.personalization.api.managers.InAppNotificationManager
67
import com.personalization.api.managers.TrackEventManager
78
import com.personalization.api.params.ProductItemParams
9+
import com.personalization.sdk.data.mappers.popup.PopupDtoMapper
10+
import com.personalization.sdk.data.models.params.SdkInitializationParams.PARAM_POPUP
811
import com.personalization.sdk.domain.usecases.network.SendNetworkMethodUseCase
912
import com.personalization.sdk.domain.usecases.recommendation.GetRecommendedByUseCase
1013
import com.personalization.sdk.domain.usecases.recommendation.SetRecommendedByUseCase
14+
import org.json.JSONObject
1115
import javax.inject.Inject
1216

1317
internal class TrackEventManagerImpl @Inject constructor(
1418
val getRecommendedByUseCase: GetRecommendedByUseCase,
1519
val setRecommendedByUseCase: SetRecommendedByUseCase,
16-
private val sendNetworkMethodUseCase: SendNetworkMethodUseCase
20+
private val sendNetworkMethodUseCase: SendNetworkMethodUseCase,
21+
private val inAppNotificationManager: InAppNotificationManager
1722
) : TrackEventManager {
1823

1924
override fun track(event: TrackEvent, productId: String) {
@@ -31,9 +36,24 @@ internal class TrackEventManagerImpl @Inject constructor(
3136
params.put(lastRecommendedBy)
3237
setRecommendedByUseCase(null)
3338
}
34-
sendNetworkMethodUseCase.postAsync(PUSH_REQUEST, params.build(), listener)
39+
40+
val internalListener = object : OnApiCallbackListener() {
41+
override fun onSuccess(response: JSONObject?) {
42+
response?.let {
43+
handlePopup(response)
44+
}
45+
listener?.onSuccess(response)
46+
}
47+
}
48+
49+
sendNetworkMethodUseCase.postAsync(
50+
PUSH_REQUEST,
51+
params.build(),
52+
internalListener
53+
)
3554
}
3655

56+
3757
override fun customTrack(
3858
event: String,
3959
email: String?,
@@ -69,7 +89,27 @@ internal class TrackEventManagerImpl @Inject constructor(
6989
params.put(VALUE_PARAMETER, value)
7090
}
7191

72-
sendNetworkMethodUseCase.postAsync(CUSTOM_PUSH_REQUEST, params.build(), listener)
92+
val internalListener = object : OnApiCallbackListener() {
93+
override fun onSuccess(response: JSONObject?) {
94+
response?.let {
95+
handlePopup(response)
96+
}
97+
listener?.onSuccess(response)
98+
}
99+
}
100+
101+
sendNetworkMethodUseCase.postAsync(
102+
CUSTOM_PUSH_REQUEST,
103+
params.build(),
104+
internalListener
105+
)
106+
}
107+
108+
private fun handlePopup(response: JSONObject) {
109+
val popUpData = response.optJSONObject(PARAM_POPUP)?.let { PopupDtoMapper.map(it) }
110+
if (popUpData != null) {
111+
inAppNotificationManager.shopPopUp(popupDto = popUpData)
112+
}
73113
}
74114

75115
companion object {

0 commit comments

Comments
 (0)