From 6597a8f79ef356b927261688bc3d953d14f23bc9 Mon Sep 17 00:00:00 2001 From: Arina Gazhina Date: Mon, 15 Sep 2025 19:11:08 +0300 Subject: [PATCH 1/4] feat(nps): repository --- .../repositories/nps/NPSRepositoryImpl.kt | 42 +++++++++++++++++++ .../sdk/domain/repositories/NPSRepository.kt | 14 +++++++ 2 files changed, 56 insertions(+) create mode 100644 personalization-sdk/src/main/kotlin/com/personalization/sdk/data/repositories/nps/NPSRepositoryImpl.kt create mode 100644 personalization-sdk/src/main/kotlin/com/personalization/sdk/domain/repositories/NPSRepository.kt diff --git a/personalization-sdk/src/main/kotlin/com/personalization/sdk/data/repositories/nps/NPSRepositoryImpl.kt b/personalization-sdk/src/main/kotlin/com/personalization/sdk/data/repositories/nps/NPSRepositoryImpl.kt new file mode 100644 index 00000000..376f3eb6 --- /dev/null +++ b/personalization-sdk/src/main/kotlin/com/personalization/sdk/data/repositories/nps/NPSRepositoryImpl.kt @@ -0,0 +1,42 @@ +package com.personalization.sdk.data.repositories.nps + +import com.personalization.api.OnApiCallbackListener +import com.personalization.sdk.domain.repositories.NPSRepository +import com.personalization.sdk.domain.usecases.network.SendNetworkMethodUseCase +import org.json.JSONObject +import javax.inject.Inject + +private const val METHOD_CREATE = "nps/create" +private const val KEY_RATE = "rate" +private const val KEY_CHANNEL = "channel" +private const val KEY_CATEGORY = "category" +private const val KEY_ORDER_ID = "order_id" +private const val KEY_COMMENT = "comment" + +class NPSRepositoryImpl @Inject constructor( + private val sendNetworkMethodUseCase: SendNetworkMethodUseCase +) : NPSRepository { + + override suspend fun review( + rate: Int, + channel: String, + category: String, + orderId: String?, + comment: String?, + listener: OnApiCallbackListener? + ) { + val params = JSONObject().apply { + put(KEY_RATE, rate) + put(KEY_CHANNEL, channel) + put(KEY_CATEGORY, category) + orderId?.let { put(KEY_ORDER_ID, it) } + comment?.let { put(KEY_COMMENT, it) } + } + + sendNetworkMethodUseCase.postAsync( + method = METHOD_CREATE, + params = params, + listener = listener + ) + } +} diff --git a/personalization-sdk/src/main/kotlin/com/personalization/sdk/domain/repositories/NPSRepository.kt b/personalization-sdk/src/main/kotlin/com/personalization/sdk/domain/repositories/NPSRepository.kt new file mode 100644 index 00000000..580995c0 --- /dev/null +++ b/personalization-sdk/src/main/kotlin/com/personalization/sdk/domain/repositories/NPSRepository.kt @@ -0,0 +1,14 @@ +package com.personalization.sdk.domain.repositories + +import com.personalization.api.OnApiCallbackListener + +interface NPSRepository { + suspend fun review( + rate: Int, + channel: String, + category: String, + orderId: String?, + comment: String?, + listener: OnApiCallbackListener? = null + ) +} From 59098f0e0d63a9c0400b89ba29ac9f3e3d137f75 Mon Sep 17 00:00:00 2001 From: Arina Gazhina Date: Mon, 15 Sep 2025 19:11:24 +0300 Subject: [PATCH 2/4] feat(nps): di --- .../com/personalization/sdk/data/di/RepositoriesModule.kt | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/personalization-sdk/src/main/kotlin/com/personalization/sdk/data/di/RepositoriesModule.kt b/personalization-sdk/src/main/kotlin/com/personalization/sdk/data/di/RepositoriesModule.kt index f309a454..22153e4b 100644 --- a/personalization-sdk/src/main/kotlin/com/personalization/sdk/data/di/RepositoriesModule.kt +++ b/personalization-sdk/src/main/kotlin/com/personalization/sdk/data/di/RepositoriesModule.kt @@ -3,10 +3,12 @@ package com.personalization.sdk.data.di import com.personalization.sdk.data.repositories.advertising.AdvertisingRepositoryImpl import com.personalization.sdk.data.repositories.network.NetworkRepositoryImpl import com.personalization.sdk.data.repositories.notification.NotificationRepositoryImpl +import com.personalization.sdk.data.repositories.nps.NPSRepositoryImpl import com.personalization.sdk.data.repositories.preferences.PreferencesRepositoryImpl import com.personalization.sdk.data.repositories.recommendation.RecommendationRepositoryImpl import com.personalization.sdk.data.repositories.userSettings.UserSettingsRepositoryImpl import com.personalization.sdk.domain.repositories.AdvertisingRepository +import com.personalization.sdk.domain.repositories.NPSRepository import com.personalization.sdk.domain.repositories.NetworkRepository import com.personalization.sdk.domain.repositories.NotificationRepository import com.personalization.sdk.domain.repositories.PreferencesRepository @@ -39,4 +41,7 @@ abstract class RepositoriesModule { @Binds abstract fun bindAdvertisingRepository(impl: AdvertisingRepositoryImpl): AdvertisingRepository + @Binds + abstract fun bindNPSRepository(impl: NPSRepositoryImpl): NPSRepository + } From 85153dfb13511856bbda72ef9122f5c640176e66 Mon Sep 17 00:00:00 2001 From: Arina Gazhina Date: Mon, 15 Sep 2025 19:11:51 +0300 Subject: [PATCH 3/4] feat(sdk): nps review method --- .../main/kotlin/com/personalization/SDK.kt | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/personalization-sdk/src/main/kotlin/com/personalization/SDK.kt b/personalization-sdk/src/main/kotlin/com/personalization/SDK.kt index 8ba4627e..b040df32 100644 --- a/personalization-sdk/src/main/kotlin/com/personalization/SDK.kt +++ b/personalization-sdk/src/main/kotlin/com/personalization/SDK.kt @@ -21,6 +21,7 @@ import com.personalization.di.DaggerSdkComponent import com.personalization.features.notification.data.mapper.toNotificationData import com.personalization.features.notification.presentation.helpers.NotificationHelper import com.personalization.handlers.notifications.NotificationHandler +import com.personalization.sdk.domain.repositories.NPSRepository import com.personalization.sdk.domain.usecases.network.AddTaskToQueueUseCase import com.personalization.sdk.domain.usecases.network.InitNetworkUseCase import com.personalization.sdk.domain.usecases.network.SendNetworkMethodUseCase @@ -111,6 +112,9 @@ open class SDK { @Inject lateinit var notificationHelper: NotificationHelper + @Inject + lateinit var NPSRepository: NPSRepository + /** * @param shopId Shop key */ @@ -404,6 +408,22 @@ open class SDK { } } + suspend fun review( + rate: Int, + channel: String, + category: String, + orderId: String? = null, + comment: String? = null, + listener: OnApiCallbackListener? = null + ) = NPSRepository.review( + rate = rate, + channel = channel, + category = category, + orderId = orderId, + comment = comment, + listener = listener + ) + /** * Request a dynamic block of recommendations * From 0553360b841dcf28a985a51498002a9b74a4a25c Mon Sep 17 00:00:00 2001 From: Arina Gazhina Date: Mon, 15 Sep 2025 19:13:35 +0300 Subject: [PATCH 4/4] fix(nps): remove suspend modifier --- personalization-sdk/src/main/kotlin/com/personalization/SDK.kt | 2 +- .../sdk/data/repositories/nps/NPSRepositoryImpl.kt | 2 +- .../personalization/sdk/domain/repositories/NPSRepository.kt | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/personalization-sdk/src/main/kotlin/com/personalization/SDK.kt b/personalization-sdk/src/main/kotlin/com/personalization/SDK.kt index b040df32..b0d018f1 100644 --- a/personalization-sdk/src/main/kotlin/com/personalization/SDK.kt +++ b/personalization-sdk/src/main/kotlin/com/personalization/SDK.kt @@ -408,7 +408,7 @@ open class SDK { } } - suspend fun review( + fun review( rate: Int, channel: String, category: String, diff --git a/personalization-sdk/src/main/kotlin/com/personalization/sdk/data/repositories/nps/NPSRepositoryImpl.kt b/personalization-sdk/src/main/kotlin/com/personalization/sdk/data/repositories/nps/NPSRepositoryImpl.kt index 376f3eb6..d1f48438 100644 --- a/personalization-sdk/src/main/kotlin/com/personalization/sdk/data/repositories/nps/NPSRepositoryImpl.kt +++ b/personalization-sdk/src/main/kotlin/com/personalization/sdk/data/repositories/nps/NPSRepositoryImpl.kt @@ -17,7 +17,7 @@ class NPSRepositoryImpl @Inject constructor( private val sendNetworkMethodUseCase: SendNetworkMethodUseCase ) : NPSRepository { - override suspend fun review( + override fun review( rate: Int, channel: String, category: String, diff --git a/personalization-sdk/src/main/kotlin/com/personalization/sdk/domain/repositories/NPSRepository.kt b/personalization-sdk/src/main/kotlin/com/personalization/sdk/domain/repositories/NPSRepository.kt index 580995c0..aab70bfb 100644 --- a/personalization-sdk/src/main/kotlin/com/personalization/sdk/domain/repositories/NPSRepository.kt +++ b/personalization-sdk/src/main/kotlin/com/personalization/sdk/domain/repositories/NPSRepository.kt @@ -3,7 +3,7 @@ package com.personalization.sdk.domain.repositories import com.personalization.api.OnApiCallbackListener interface NPSRepository { - suspend fun review( + fun review( rate: Int, channel: String, category: String,