@@ -3,17 +3,22 @@ package com.personalization.features.trackEvent.impl
33import com.personalization.Params
44import com.personalization.Params.TrackEvent
55import com.personalization.api.OnApiCallbackListener
6+ import com.personalization.api.managers.InAppNotificationManager
67import com.personalization.api.managers.TrackEventManager
78import 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
811import com.personalization.sdk.domain.usecases.network.SendNetworkMethodUseCase
912import com.personalization.sdk.domain.usecases.recommendation.GetRecommendedByUseCase
1013import com.personalization.sdk.domain.usecases.recommendation.SetRecommendedByUseCase
14+ import org.json.JSONObject
1115import javax.inject.Inject
1216
1317internal 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