From 4443886397884bb4ea581e9a167af0c528e3738a Mon Sep 17 00:00:00 2001 From: comfrt1k Date: Fri, 20 Dec 2024 01:55:35 +0300 Subject: [PATCH 1/4] feat: add excludeMerchants parameter to searchInstant method --- .../com/personalization/api/managers/SearchManager.kt | 1 + .../features/search/impl/SearchManagerImpl.kt | 9 ++++++++- .../data/repositories/network/NetworkRepositoryImpl.kt | 1 + 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/personalization-sdk/src/main/kotlin/com/personalization/api/managers/SearchManager.kt b/personalization-sdk/src/main/kotlin/com/personalization/api/managers/SearchManager.kt index 6b33718a..2332d5f3 100644 --- a/personalization-sdk/src/main/kotlin/com/personalization/api/managers/SearchManager.kt +++ b/personalization-sdk/src/main/kotlin/com/personalization/api/managers/SearchManager.kt @@ -33,6 +33,7 @@ interface SearchManager { fun searchInstant( query: String, locations: String? = null, + excludeMerchants: String? = null, onSearchInstant: (SearchInstantResponse) -> Unit, onError: (Int, String?) -> Unit = { _: Int, _: String? -> } ) diff --git a/personalization-sdk/src/main/kotlin/com/personalization/features/search/impl/SearchManagerImpl.kt b/personalization-sdk/src/main/kotlin/com/personalization/features/search/impl/SearchManagerImpl.kt index 6c0e6610..dab1db9e 100644 --- a/personalization-sdk/src/main/kotlin/com/personalization/features/search/impl/SearchManagerImpl.kt +++ b/personalization-sdk/src/main/kotlin/com/personalization/features/search/impl/SearchManagerImpl.kt @@ -1,5 +1,6 @@ package com.personalization.features.search.impl +import android.util.Log import com.google.gson.Gson import com.personalization.Params import com.personalization.api.OnApiCallbackListener @@ -40,12 +41,17 @@ internal class SearchManagerImpl @Inject constructor( override fun searchInstant( query: String, locations: String?, + excludeMerchants: String?, onSearchInstant: (SearchInstantResponse) -> Unit, onError: (Int, String?) -> Unit ) { val searchParams = SearchParams() - if (locations != null) searchParams.put(LOCATIONS_PARAMETER, locations) + if (locations != null){ + searchParams.put(LOCATIONS_PARAMETER, locations) + if(excludeMerchants!=null) + searchParams.put(EXCLUDED_MERCHANTS_PARAMETER, excludeMerchants) + } search(query, TYPE.INSTANT, searchParams, object : OnApiCallbackListener() { override fun onSuccess(response: JSONObject?) { @@ -104,6 +110,7 @@ internal class SearchManagerImpl @Inject constructor( private const val TYPE_PARAMETER = "type" private const val QUERY_PARAMETER = "search_query" private const val LOCATIONS_PARAMETER = "locations" + private const val EXCLUDED_MERCHANTS_PARAMETER = "exclude_merchants" } private enum class TYPE(var value: String) { diff --git a/personalization-sdk/src/main/kotlin/com/personalization/sdk/data/repositories/network/NetworkRepositoryImpl.kt b/personalization-sdk/src/main/kotlin/com/personalization/sdk/data/repositories/network/NetworkRepositoryImpl.kt index 6e22db27..b2c3bc63 100644 --- a/personalization-sdk/src/main/kotlin/com/personalization/sdk/data/repositories/network/NetworkRepositoryImpl.kt +++ b/personalization-sdk/src/main/kotlin/com/personalization/sdk/data/repositories/network/NetworkRepositoryImpl.kt @@ -1,6 +1,7 @@ package com.personalization.sdk.data.repositories.network import android.net.Uri +import android.util.Log import com.personalization.SDK import com.personalization.api.OnApiCallbackListener import com.personalization.sdk.data.di.DataSourcesModule From cfe3e206e7bd64108db2e0d12ae49c9e2b5ad0fa Mon Sep 17 00:00:00 2001 From: comfrt1k Date: Fri, 20 Dec 2024 23:20:24 +0300 Subject: [PATCH 2/4] feat: add excludeMerchants parameter to searchFull method --- .../api/managers/SearchManager.kt | 2 +- .../personalization/api/params/SearchParams.kt | 1 + .../features/search/impl/SearchManagerImpl.kt | 16 ++++++++-------- 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/personalization-sdk/src/main/kotlin/com/personalization/api/managers/SearchManager.kt b/personalization-sdk/src/main/kotlin/com/personalization/api/managers/SearchManager.kt index 2332d5f3..cf578c18 100644 --- a/personalization-sdk/src/main/kotlin/com/personalization/api/managers/SearchManager.kt +++ b/personalization-sdk/src/main/kotlin/com/personalization/api/managers/SearchManager.kt @@ -33,7 +33,7 @@ interface SearchManager { fun searchInstant( query: String, locations: String? = null, - excludeMerchants: String? = null, + excludedMerchants: List?=null, onSearchInstant: (SearchInstantResponse) -> Unit, onError: (Int, String?) -> Unit = { _: Int, _: String? -> } ) diff --git a/personalization-sdk/src/main/kotlin/com/personalization/api/params/SearchParams.kt b/personalization-sdk/src/main/kotlin/com/personalization/api/params/SearchParams.kt index a11a8701..915ae522 100644 --- a/personalization-sdk/src/main/kotlin/com/personalization/api/params/SearchParams.kt +++ b/personalization-sdk/src/main/kotlin/com/personalization/api/params/SearchParams.kt @@ -17,6 +17,7 @@ class SearchParams : AbstractParams() { SORT_BY("sort_by"), SORT_DIR("sort_dir"), LOCATIONS("locations"), + EXCLUDED_MERCHANTS("excluded_merchants"), BRANDS("brands"), FILTERS("filters"), PRICE_MIN("price_min"), diff --git a/personalization-sdk/src/main/kotlin/com/personalization/features/search/impl/SearchManagerImpl.kt b/personalization-sdk/src/main/kotlin/com/personalization/features/search/impl/SearchManagerImpl.kt index dab1db9e..b6979afe 100644 --- a/personalization-sdk/src/main/kotlin/com/personalization/features/search/impl/SearchManagerImpl.kt +++ b/personalization-sdk/src/main/kotlin/com/personalization/features/search/impl/SearchManagerImpl.kt @@ -1,6 +1,5 @@ package com.personalization.features.search.impl -import android.util.Log import com.google.gson.Gson import com.personalization.Params import com.personalization.api.OnApiCallbackListener @@ -10,8 +9,8 @@ import com.personalization.api.responses.search.SearchBlankResponse import com.personalization.api.responses.search.SearchFullResponse import com.personalization.api.responses.search.SearchInstantResponse import com.personalization.sdk.domain.usecases.network.SendNetworkMethodUseCase -import javax.inject.Inject import org.json.JSONObject +import javax.inject.Inject internal class SearchManagerImpl @Inject constructor( private val sendNetworkMethodUseCase: SendNetworkMethodUseCase @@ -41,16 +40,17 @@ internal class SearchManagerImpl @Inject constructor( override fun searchInstant( query: String, locations: String?, - excludeMerchants: String?, + excludedMerchants: List?, onSearchInstant: (SearchInstantResponse) -> Unit, onError: (Int, String?) -> Unit ) { val searchParams = SearchParams() - - if (locations != null){ + locations?.let { searchParams.put(LOCATIONS_PARAMETER, locations) - if(excludeMerchants!=null) - searchParams.put(EXCLUDED_MERCHANTS_PARAMETER, excludeMerchants) + excludedMerchants?.let { + val excludeMerchantsString = excludedMerchants.joinToString(",") + searchParams.put(EXCLUDED_MERCHANTS_PARAMETER,excludeMerchantsString) + } } search(query, TYPE.INSTANT, searchParams, object : OnApiCallbackListener() { @@ -110,7 +110,7 @@ internal class SearchManagerImpl @Inject constructor( private const val TYPE_PARAMETER = "type" private const val QUERY_PARAMETER = "search_query" private const val LOCATIONS_PARAMETER = "locations" - private const val EXCLUDED_MERCHANTS_PARAMETER = "exclude_merchants" + private const val EXCLUDED_MERCHANTS_PARAMETER = "excluded_merchants" } private enum class TYPE(var value: String) { From 790b8f0c75d70e76688c688943b7eca23243b24f Mon Sep 17 00:00:00 2001 From: comfrt1k Date: Mon, 23 Dec 2024 17:46:38 +0300 Subject: [PATCH 3/4] refactor: moved constants to top-level properties and removed unused imports --- .../api/managers/SearchManager.kt | 2 +- .../features/search/impl/SearchManagerImpl.kt | 19 +++++++------------ .../network/NetworkRepositoryImpl.kt | 1 - 3 files changed, 8 insertions(+), 14 deletions(-) diff --git a/personalization-sdk/src/main/kotlin/com/personalization/api/managers/SearchManager.kt b/personalization-sdk/src/main/kotlin/com/personalization/api/managers/SearchManager.kt index cf578c18..3d417842 100644 --- a/personalization-sdk/src/main/kotlin/com/personalization/api/managers/SearchManager.kt +++ b/personalization-sdk/src/main/kotlin/com/personalization/api/managers/SearchManager.kt @@ -33,7 +33,7 @@ interface SearchManager { fun searchInstant( query: String, locations: String? = null, - excludedMerchants: List?=null, + excludedMerchants: List? = null, onSearchInstant: (SearchInstantResponse) -> Unit, onError: (Int, String?) -> Unit = { _: Int, _: String? -> } ) diff --git a/personalization-sdk/src/main/kotlin/com/personalization/features/search/impl/SearchManagerImpl.kt b/personalization-sdk/src/main/kotlin/com/personalization/features/search/impl/SearchManagerImpl.kt index b6979afe..809c3851 100644 --- a/personalization-sdk/src/main/kotlin/com/personalization/features/search/impl/SearchManagerImpl.kt +++ b/personalization-sdk/src/main/kotlin/com/personalization/features/search/impl/SearchManagerImpl.kt @@ -12,6 +12,11 @@ import com.personalization.sdk.domain.usecases.network.SendNetworkMethodUseCase import org.json.JSONObject import javax.inject.Inject +private const val SEARCH_REQUEST = "search" +private const val BLANK_SEARCH_REQUEST = "search/blank" +private const val TYPE_PARAMETER = "type" +private const val QUERY_PARAMETER = "search_query" + internal class SearchManagerImpl @Inject constructor( private val sendNetworkMethodUseCase: SendNetworkMethodUseCase ) : SearchManager { @@ -46,10 +51,10 @@ internal class SearchManagerImpl @Inject constructor( ) { val searchParams = SearchParams() locations?.let { - searchParams.put(LOCATIONS_PARAMETER, locations) + searchParams.put(SearchParams.Parameter.LOCATIONS, locations) excludedMerchants?.let { val excludeMerchantsString = excludedMerchants.joinToString(",") - searchParams.put(EXCLUDED_MERCHANTS_PARAMETER,excludeMerchantsString) + searchParams.put(SearchParams.Parameter.EXCLUDED_MERCHANTS, excludeMerchantsString) } } @@ -103,16 +108,6 @@ internal class SearchManagerImpl @Inject constructor( sendNetworkMethodUseCase.get(SEARCH_REQUEST, params.build(), listener) } - companion object { - private const val SEARCH_REQUEST = "search" - private const val BLANK_SEARCH_REQUEST = "search/blank" - - private const val TYPE_PARAMETER = "type" - private const val QUERY_PARAMETER = "search_query" - private const val LOCATIONS_PARAMETER = "locations" - private const val EXCLUDED_MERCHANTS_PARAMETER = "excluded_merchants" - } - private enum class TYPE(var value: String) { INSTANT("instant_search"), FULL("full_search") diff --git a/personalization-sdk/src/main/kotlin/com/personalization/sdk/data/repositories/network/NetworkRepositoryImpl.kt b/personalization-sdk/src/main/kotlin/com/personalization/sdk/data/repositories/network/NetworkRepositoryImpl.kt index b2c3bc63..6e22db27 100644 --- a/personalization-sdk/src/main/kotlin/com/personalization/sdk/data/repositories/network/NetworkRepositoryImpl.kt +++ b/personalization-sdk/src/main/kotlin/com/personalization/sdk/data/repositories/network/NetworkRepositoryImpl.kt @@ -1,7 +1,6 @@ package com.personalization.sdk.data.repositories.network import android.net.Uri -import android.util.Log import com.personalization.SDK import com.personalization.api.OnApiCallbackListener import com.personalization.sdk.data.di.DataSourcesModule From 27f4daca19c304932ed849fdf63ad6f0a2473732 Mon Sep 17 00:00:00 2001 From: "r46-publisher[bot]" <161856912+r46-publisher[bot]@users.noreply.github.com> Date: Tue, 24 Dec 2024 21:26:56 +0000 Subject: [PATCH 4/4] chore(common): version bump to 2.0.49 --- personalization-sdk/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/personalization-sdk/build.gradle b/personalization-sdk/build.gradle index d74bc08d..a9daf184 100644 --- a/personalization-sdk/build.gradle +++ b/personalization-sdk/build.gradle @@ -6,7 +6,7 @@ plugins { id 'kotlin-kapt' } -version='2.0.48' +version='2.0.49' android { compileSdkVersion 34