From a75c569197b058c08b55d172f54b8519e23e7ad4 Mon Sep 17 00:00:00 2001 From: Valeriy Date: Fri, 20 Dec 2024 10:37:58 +0300 Subject: [PATCH] refactor(RecommendationDataSource): RecommendationDataSource abstraction --- .../kotlin/com/personalization/di/SdkComponent.kt | 2 -- .../sdk/data/di/DataSourcesModule.kt | 15 ++++++--------- .../recommendation/RecommendationDataSource.kt | 11 +++-------- .../RecommendationDataSourceImpl.kt | 15 +++++++++++++++ 4 files changed, 24 insertions(+), 19 deletions(-) create mode 100644 personalization-sdk/src/main/kotlin/com/personalization/sdk/data/repositories/recommendation/RecommendationDataSourceImpl.kt diff --git a/personalization-sdk/src/main/kotlin/com/personalization/di/SdkComponent.kt b/personalization-sdk/src/main/kotlin/com/personalization/di/SdkComponent.kt index cf9337b9..f4f65213 100644 --- a/personalization-sdk/src/main/kotlin/com/personalization/di/SdkComponent.kt +++ b/personalization-sdk/src/main/kotlin/com/personalization/di/SdkComponent.kt @@ -2,7 +2,6 @@ package com.personalization.di import com.personalization.SDK import com.personalization.features.notification.service.NotificationService -import com.personalization.sdk.data.di.AbstractDataSourcesModule import com.personalization.sdk.data.di.DataSourcesModule import com.personalization.sdk.data.di.ModelsModule import com.personalization.sdk.data.di.RepositoriesModule @@ -15,7 +14,6 @@ import javax.inject.Singleton DataSourcesModule::class, RepositoriesModule::class, ModelsModule::class, - AbstractDataSourcesModule::class, SdkModule::class, AppModule::class ] diff --git a/personalization-sdk/src/main/kotlin/com/personalization/sdk/data/di/DataSourcesModule.kt b/personalization-sdk/src/main/kotlin/com/personalization/sdk/data/di/DataSourcesModule.kt index 5040bfdc..d03e6272 100644 --- a/personalization-sdk/src/main/kotlin/com/personalization/sdk/data/di/DataSourcesModule.kt +++ b/personalization-sdk/src/main/kotlin/com/personalization/sdk/data/di/DataSourcesModule.kt @@ -5,6 +5,7 @@ import com.personalization.sdk.data.repositories.notification.NotificationDataSo import com.personalization.sdk.data.repositories.preferences.PreferencesDataSource import com.personalization.sdk.data.repositories.preferences.PreferencesDataSourceImpl import com.personalization.sdk.data.repositories.recommendation.RecommendationDataSource +import com.personalization.sdk.data.repositories.recommendation.RecommendationDataSourceImpl import com.personalization.sdk.data.repositories.userSettings.UserSettingsDataSource import com.personalization.sdk.data.repositories.userSettings.UserSettingsDataSourceImpl import dagger.Binds @@ -15,19 +16,15 @@ import dagger.assisted.AssistedFactory import javax.inject.Singleton @Module -class DataSourcesModule { +interface DataSourcesModule { - @Provides + @Binds @Singleton - fun provideRecommendationDataSource() = RecommendationDataSource() -} - -@Module -interface AbstractDataSourcesModule { + fun bindPreferencesDataSource(impl: PreferencesDataSourceImpl): PreferencesDataSource @Binds @Singleton - fun bindPreferencesDataSource(impl: PreferencesDataSourceImpl): PreferencesDataSource + fun bindRecommendationDataSource(impl: RecommendationDataSourceImpl): RecommendationDataSource companion object { @@ -40,7 +37,7 @@ interface AbstractDataSourcesModule { @Provides @Singleton - fun bindUserSettingsDataSource( + fun provideUserSettingsDataSource( preferencesDataSource: PreferencesDataSource, shopId: String, segment: String, diff --git a/personalization-sdk/src/main/kotlin/com/personalization/sdk/data/repositories/recommendation/RecommendationDataSource.kt b/personalization-sdk/src/main/kotlin/com/personalization/sdk/data/repositories/recommendation/RecommendationDataSource.kt index d25254cc..09e8c035 100644 --- a/personalization-sdk/src/main/kotlin/com/personalization/sdk/data/repositories/recommendation/RecommendationDataSource.kt +++ b/personalization-sdk/src/main/kotlin/com/personalization/sdk/data/repositories/recommendation/RecommendationDataSource.kt @@ -1,15 +1,10 @@ package com.personalization.sdk.data.repositories.recommendation import com.personalization.sdk.domain.models.RecommendedBy -import javax.inject.Inject -class RecommendationDataSource @Inject constructor() { +interface RecommendationDataSource { - private var recommendedBy: RecommendedBy? = null + fun getRecommendedBy(): RecommendedBy? - fun getRecommendedBy(): RecommendedBy? = recommendedBy - - fun setRecommendedBy(recommendedBy: RecommendedBy?) { - this.recommendedBy = recommendedBy - } + fun setRecommendedBy(recommendedBy: RecommendedBy?) } diff --git a/personalization-sdk/src/main/kotlin/com/personalization/sdk/data/repositories/recommendation/RecommendationDataSourceImpl.kt b/personalization-sdk/src/main/kotlin/com/personalization/sdk/data/repositories/recommendation/RecommendationDataSourceImpl.kt new file mode 100644 index 00000000..3ace76e3 --- /dev/null +++ b/personalization-sdk/src/main/kotlin/com/personalization/sdk/data/repositories/recommendation/RecommendationDataSourceImpl.kt @@ -0,0 +1,15 @@ +package com.personalization.sdk.data.repositories.recommendation + +import com.personalization.sdk.domain.models.RecommendedBy +import javax.inject.Inject + +class RecommendationDataSourceImpl @Inject constructor() : RecommendationDataSource { + + private var recommendedBy: RecommendedBy? = null + + override fun getRecommendedBy(): RecommendedBy? = recommendedBy + + override fun setRecommendedBy(recommendedBy: RecommendedBy?) { + this.recommendedBy = recommendedBy + } +}