Skip to content

Commit

Permalink
feat: Segregated working with cart into separate CartManager
Browse files Browse the repository at this point in the history
  • Loading branch information
looee1q committed Dec 17, 2024
1 parent 9cb0264 commit 28a0f29
Show file tree
Hide file tree
Showing 6 changed files with 48 additions and 13 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import com.google.firebase.messaging.RemoteMessage
import com.personalization.Params.InternalParameter
import com.personalization.Params.TrackEvent
import com.personalization.api.OnApiCallbackListener
import com.personalization.api.managers.CartManager
import com.personalization.api.managers.InAppNotificationManager
import com.personalization.api.managers.ProductsManager
import com.personalization.api.managers.RecommendationManager
Expand Down Expand Up @@ -59,6 +60,9 @@ open class SDK {
@Inject
lateinit var productsManager: ProductsManager

@Inject
lateinit var cartManager: CartManager

@Inject
lateinit var trackEventManager: TrackEventManager

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package com.personalization.api.managers

import com.personalization.api.OnApiCallbackListener

interface CartManager {

fun getClientShoppingCart(
listener: OnApiCallbackListener?
)
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,4 @@ interface ProductsManager {
itemId: String,
listener: OnApiCallbackListener?
)

fun getClientShoppingCart(
listener: OnApiCallbackListener?
)
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,13 @@ package com.personalization.di

import android.content.Context
import com.personalization.RegisterManager
import com.personalization.api.managers.CartManager
import com.personalization.api.managers.InAppNotificationManager
import com.personalization.api.managers.ProductsManager
import com.personalization.api.managers.RecommendationManager
import com.personalization.api.managers.SearchManager
import com.personalization.api.managers.TrackEventManager
import com.personalization.features.cart.CartManagerImpl
import com.personalization.features.inAppNotification.impl.InAppNotificationManagerImpl
import com.personalization.features.notification.domain.data.NotificationDataExtractor
import com.personalization.features.products.impl.ProductsManagerImpl
Expand Down Expand Up @@ -65,6 +67,14 @@ class SdkModule {
sendNetworkMethodUseCase = sendNetworkMethodUseCase
)

@Singleton
@Provides
fun provideCartManager(
sendNetworkMethodUseCase: SendNetworkMethodUseCase
): CartManager = CartManagerImpl(
sendNetworkMethodUseCase = sendNetworkMethodUseCase
)

@Singleton
@Provides
fun provideTrackEventManager(
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package com.personalization.features.cart

import com.personalization.Params
import com.personalization.api.OnApiCallbackListener
import com.personalization.api.managers.CartManager
import com.personalization.sdk.domain.usecases.network.SendNetworkMethodUseCase
import javax.inject.Inject

internal class CartManagerImpl @Inject constructor(
private val sendNetworkMethodUseCase: SendNetworkMethodUseCase,
) : CartManager {

override fun getClientShoppingCart(listener: OnApiCallbackListener?) {
sendNetworkMethodUseCase.getAsync(
method = GET_CLIENT_SHOPPING_CART,
params = Params().build(),
listener = listener
)
}

companion object {
const val GET_CLIENT_SHOPPING_CART = "products/cart"
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -49,14 +49,6 @@ internal class ProductsManagerImpl @Inject constructor(
)
}

override fun getClientShoppingCart(listener: OnApiCallbackListener?) {
sendNetworkMethodUseCase.getAsync(
method = GET_CLIENT_SHOPPING_CART,
params = Params().build(),
listener = listener
)
}

private fun Params.buildParams(
itemId: String? = null,
brands: String? = null,
Expand Down Expand Up @@ -84,7 +76,6 @@ internal class ProductsManagerImpl @Inject constructor(
companion object {
const val GET_PRODUCT_LIST_REQUEST = "products"
const val GET_PRODUCT_INFO_REQUEST = "products/get"
const val GET_CLIENT_SHOPPING_CART = "products/cart"

private const val LIMIT_KEY = "limit"
private const val PAGE_KEY = "page"
Expand Down

0 comments on commit 28a0f29

Please sign in to comment.