@@ -6,8 +6,8 @@ import io.constructor.data.ConstructorData
66import io.constructor.data.DataManager
77import io.constructor.data.local.PreferencesHelper
88import io.constructor.data.memory.ConfigMemoryHolder
9+ import io.constructor.data.model.Group
910import io.constructor.data.model.Suggestion
10- import io.constructor.data.model.SuggestionViewModel
1111import io.constructor.injection.component.AppComponent
1212import io.constructor.injection.component.DaggerAppComponent
1313import io.constructor.injection.module.AppModule
@@ -93,6 +93,10 @@ object ConstructorIo {
9393 }
9494 }
9595
96+ fun appMovedToForeground () {
97+ preferenceHelper.getSessionId(sessionIncrementEventHandler)
98+ }
99+
96100 fun getAutocompleteResults (query : String ): Observable <ConstructorData <List <Suggestion >? >> {
97101 val params = mutableListOf<Pair <String , String >>()
98102 configMemoryHolder.autocompleteResultCount?.entries?.forEach {
@@ -101,71 +105,72 @@ object ConstructorIo {
101105 return dataManager.getAutocompleteResults(query, params.toTypedArray())
102106 }
103107
104- fun trackSelect ( query : String , suggestion : SuggestionViewModel , errorCallback : ConstructorError = null) {
108+ fun trackAutocompleteSelect ( searchTerm : String , originalQuery : String , sectionName : String , group : Group ? = null , errorCallback : ConstructorError = null) {
105109 val sessionId = preferenceHelper.getSessionId(sessionIncrementEventHandler)
106110 val encodedParams: ArrayList <Pair <String , String >> = arrayListOf ()
107- suggestion. group?.groupId?.let { encodedParams.add(Constants .QueryConstants .GROUP_ID .urlEncode() to it) }
108- suggestion. group?.displayName?.let { encodedParams.add(Constants .QueryConstants .GROUP_DISPLAY_NAME .urlEncode() to it.urlEncode()) }
109- disposable.add(dataManager.trackSelect(suggestion.term ,
111+ group?.groupId?.let { encodedParams.add(Constants .QueryConstants .GROUP_ID .urlEncode() to it) }
112+ group?.displayName?.let { encodedParams.add(Constants .QueryConstants .GROUP_DISPLAY_NAME .urlEncode() to it.urlEncode()) }
113+ disposable.add(dataManager.trackAutocompleteSelect(searchTerm ,
110114 arrayOf(Constants .QueryConstants .SESSION to sessionId.toString(),
111- Constants .QueryConstants .AUTOCOMPLETE_SECTION to suggestion.section !! ,
112- Constants .QueryConstants .ORIGINAL_QUERY to query ,
115+ Constants .QueryConstants .AUTOCOMPLETE_SECTION to sectionName ,
116+ Constants .QueryConstants .ORIGINAL_QUERY to originalQuery ,
113117 Constants .QueryConstants .EVENT to Constants .QueryValues .EVENT_CLICK ),
114118 encodedParams.toTypedArray())
115119 .subscribe({
116- context.broadcastIntent(Constants .EVENT_QUERY_SENT , Constants .EXTRA_TERM to query )
120+ context.broadcastIntent(Constants .EVENT_QUERY_SENT , Constants .EXTRA_TERM to searchTerm )
117121 }, { t ->
118122 t.printStackTrace()
119123 errorCallback?.invoke(t)
120124 e(" trigger select error: ${t.message} " ) // To change body of created functions use File | Settings | File Templates.
121125 }))
122126 }
123127
124- fun trackSearch ( query : String , suggestion : SuggestionViewModel , errorCallback : ConstructorError = null) {
128+ fun trackSearchSubmit ( searchTerm : String , originalQuery : String , group : Group ? , errorCallback : ConstructorError = null) {
125129 val sessionId = preferenceHelper.getSessionId(sessionIncrementEventHandler)
126130 val encodedParams: ArrayList <Pair <String , String >> = arrayListOf ()
127- suggestion. group?.groupId?.let { encodedParams.add(Constants .QueryConstants .GROUP_ID .urlEncode() to it) }
128- suggestion. group?.displayName?.let { encodedParams.add(Constants .QueryConstants .GROUP_DISPLAY_NAME .urlEncode() to it.urlEncode()) }
129- disposable.add(dataManager.trackSearch(suggestion.term ,
131+ group?.groupId?.let { encodedParams.add(Constants .QueryConstants .GROUP_ID .urlEncode() to it) }
132+ group?.displayName?.let { encodedParams.add(Constants .QueryConstants .GROUP_DISPLAY_NAME .urlEncode() to it.urlEncode()) }
133+ disposable.add(dataManager.trackSearchSubmit(searchTerm ,
130134 arrayOf(Constants .QueryConstants .SESSION to sessionId.toString(),
131- Constants .QueryConstants .ORIGINAL_QUERY to query ,
135+ Constants .QueryConstants .ORIGINAL_QUERY to originalQuery ,
132136 Constants .QueryConstants .EVENT to Constants .QueryValues .EVENT_SEARCH ), encodedParams.toTypedArray())
133137 .subscribe({
134- context.broadcastIntent(Constants .EVENT_QUERY_SENT , Constants .EXTRA_TERM to query )
138+ context.broadcastIntent(Constants .EVENT_QUERY_SENT , Constants .EXTRA_TERM to searchTerm )
135139 }, {
136140 it.printStackTrace()
137141 errorCallback?.invoke(it)
138142 e(" trigger search error: ${it.message} " )
139143 }))
140144 }
141145
142- fun trackConversion (itemId : String , term : String = " TERM_UNKNOWN ", revenue : String? = null, errorCallback : ConstructorError = null) {
146+ fun trackConversion (itemName : String , customerId : String , revenue : Double? , searchTerm : String = Constants . QueryConstants . TERM_UNKNOWN , sectionName : String? = null, errorCallback : ConstructorError = null) {
143147 val sessionId = preferenceHelper.getSessionId(sessionIncrementEventHandler)
144- disposable.add(dataManager.trackConversion(term, itemId, revenue,
148+ disposable.add(dataManager.trackConversion(searchTerm, itemName, customerId, " %.2f " .format( revenue) ,
145149 arrayOf(Constants .QueryConstants .SESSION to sessionId.toString(),
146- Constants .QueryConstants .AUTOCOMPLETE_SECTION to preferenceHelper.defaultItemSection)).subscribeOn(Schedulers .io())
150+ Constants .QueryConstants .AUTOCOMPLETE_SECTION to (sectionName ? : preferenceHelper.defaultItemSection) )).subscribeOn(Schedulers .io())
147151 .subscribe({}, { t ->
148152 t.printStackTrace()
149153 errorCallback?.invoke(t)
150154 e(" Conversion event error: ${t.message} " )
151155 }))
152156 }
153157
154- fun trackSearchResultClickThrough ( term : String , itemId : String , position : String? = null, errorCallback : ConstructorError = null) {
158+ fun trackSearchResultClick ( itemName : String , customerId : String , searchTerm : String = Constants . QueryConstants . TERM_UNKNOWN , sectionName : String? = null, errorCallback : ConstructorError = null) {
155159 val sessionId = preferenceHelper.getSessionId(sessionIncrementEventHandler)
156- disposable.add(dataManager.trackSearchResultClickThrough(term, itemId, position,
160+ val sName = sectionName ? : preferenceHelper.defaultItemSection
161+ disposable.add(dataManager.trackSearchResultClick(itemName, customerId, searchTerm,
157162 arrayOf(Constants .QueryConstants .SESSION to sessionId.toString(),
158- Constants .QueryConstants .AUTOCOMPLETE_SECTION to preferenceHelper.defaultItemSection )).subscribeOn(Schedulers .io())
163+ Constants .QueryConstants .AUTOCOMPLETE_SECTION to sName )).subscribeOn(Schedulers .io())
159164 .subscribe({}, { t ->
160165 t.printStackTrace()
161166 errorCallback?.invoke(t)
162- e(" Conversion click through event error: ${t.message} " )
167+ e(" Search result click event error: ${t.message} " )
163168 }))
164169 }
165170
166- fun trackSearchResultLoaded (term : String , resultCount : Int , errorCallback : ConstructorError = null) {
171+ fun trackSearchResultsLoaded (term : String , resultCount : Int , errorCallback : ConstructorError = null) {
167172 val sessionId = preferenceHelper.getSessionId(sessionIncrementEventHandler)
168- disposable.add(dataManager.trackSearchResultLoaded (term, resultCount,
173+ disposable.add(dataManager.trackSearchResultsLoaded (term, resultCount,
169174 arrayOf(Constants .QueryConstants .SESSION to sessionId.toString(),
170175 Constants .QueryConstants .ACTION to Constants .QueryValues .EVENT_SEARCH_RESULTS )).subscribeOn(Schedulers .io())
171176 .subscribe({}, { t ->
@@ -187,4 +192,18 @@ object ConstructorIo {
187192 }))
188193 }
189194
195+ fun trackPurchase (clientIds : Array <String >, sectionName : String? = null, errorCallback : ConstructorError = null) {
196+ val sessionId = preferenceHelper.getSessionId(sessionIncrementEventHandler)
197+ val sectionNameParam = sectionName ? : preferenceHelper.defaultItemSection
198+ val params = mutableListOf (Constants .QueryConstants .SESSION to sessionId.toString(),
199+ Constants .QueryConstants .AUTOCOMPLETE_SECTION to sectionNameParam)
200+ clientIds.forEach { params.add(Constants .QueryConstants .CUSTOMER_ID to it) }
201+ disposable.add(dataManager.trackPurchase(params.toTypedArray()).subscribeOn(Schedulers .io())
202+ .subscribe({}, { t ->
203+ t.printStackTrace()
204+ errorCallback?.invoke(t)
205+ e(" Input focus event error: ${t.message} " )
206+ }))
207+ }
208+
190209}
0 commit comments