Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 20 additions & 0 deletions personalization-sdk/src/main/kotlin/com/personalization/SDK.kt
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -111,6 +112,9 @@ open class SDK {
@Inject
lateinit var notificationHelper: NotificationHelper

@Inject
lateinit var NPSRepository: NPSRepository

/**
* @param shopId Shop key
*/
Expand Down Expand Up @@ -404,6 +408,22 @@ open class SDK {
}
}

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
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -39,4 +41,7 @@ abstract class RepositoriesModule {
@Binds
abstract fun bindAdvertisingRepository(impl: AdvertisingRepositoryImpl): AdvertisingRepository

@Binds
abstract fun bindNPSRepository(impl: NPSRepositoryImpl): NPSRepository

}
Original file line number Diff line number Diff line change
@@ -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 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
)
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package com.personalization.sdk.domain.repositories

import com.personalization.api.OnApiCallbackListener

interface NPSRepository {
fun review(
rate: Int,
channel: String,
category: String,
orderId: String?,
comment: String?,
listener: OnApiCallbackListener? = null
)
}
Loading