From 5c67a221f5d6574fb883181e0fbf20c65d04b160 Mon Sep 17 00:00:00 2001 From: comfrt1k Date: Wed, 25 Dec 2024 00:09:39 +0300 Subject: [PATCH 1/7] feat: add GAID fetching and saving to google_ad_id --- personalization-sdk/build.gradle | 2 ++ personalization-sdk/src/main/AndroidManifest.xml | 1 + .../src/main/kotlin/com/personalization/SDK.kt | 10 ++++++++++ .../sdk/data/di/DataSourcesModule.kt | 5 +++++ .../sdk/data/di/RepositoriesModule.kt | 5 +++++ .../sdk/data/repositories/gaid/GaIdDataSource.kt | 9 +++++++++ .../data/repositories/gaid/GaIdRepositoryImpl.kt | 12 ++++++++++++ .../userSettings/UserSettingsDataSource.kt | 3 +++ .../userSettings/UserSettingsRepositoryImpl.kt | 6 +++++- .../sdk/domain/repositories/GaIdRepository.kt | 7 +++++++ .../repositories/UserSettingsRepository.kt | 2 ++ .../usecases/userSettings/FetchGaIdUseCase.kt | 16 ++++++++++++++++ 12 files changed, 77 insertions(+), 1 deletion(-) create mode 100644 personalization-sdk/src/main/kotlin/com/personalization/sdk/data/repositories/gaid/GaIdDataSource.kt create mode 100644 personalization-sdk/src/main/kotlin/com/personalization/sdk/data/repositories/gaid/GaIdRepositoryImpl.kt create mode 100644 personalization-sdk/src/main/kotlin/com/personalization/sdk/domain/repositories/GaIdRepository.kt create mode 100644 personalization-sdk/src/main/kotlin/com/personalization/sdk/domain/usecases/userSettings/FetchGaIdUseCase.kt diff --git a/personalization-sdk/build.gradle b/personalization-sdk/build.gradle index d74bc08d..ec10da5b 100644 --- a/personalization-sdk/build.gradle +++ b/personalization-sdk/build.gradle @@ -98,6 +98,8 @@ dependencies { implementation("androidx.test:rules:1.6.1") implementation("androidx.test.ext:junit:1.2.1") + implementation("com.google.android.gms:play-services-ads-identifier:17.0.0") + kapt 'com.google.dagger:dagger-compiler:2.48' } diff --git a/personalization-sdk/src/main/AndroidManifest.xml b/personalization-sdk/src/main/AndroidManifest.xml index 4b3202d5..c886892f 100644 --- a/personalization-sdk/src/main/AndroidManifest.xml +++ b/personalization-sdk/src/main/AndroidManifest.xml @@ -1,6 +1,7 @@ + Date: Thu, 26 Dec 2024 13:41:23 +0300 Subject: [PATCH 2/7] refactor: rename GaId to AdvertisingId, add exception handling when fetching the advertising ID and move logic to repository --- .../src/main/kotlin/com/personalization/SDK.kt | 6 +++--- .../sdk/data/di/DataSourcesModule.kt | 5 ----- .../sdk/data/di/RepositoriesModule.kt | 6 +++--- .../advertising/AdvertisingRepositoryImpl.kt | 18 ++++++++++++++++++ .../data/repositories/gaid/GaIdDataSource.kt | 9 --------- .../repositories/gaid/GaIdRepositoryImpl.kt | 12 ------------ .../userSettings/UserSettingsDataSource.kt | 5 +++-- .../userSettings/UserSettingsRepositoryImpl.kt | 4 ++-- .../repositories/AdvertisingRepository.kt | 5 +++++ .../sdk/domain/repositories/GaIdRepository.kt | 7 ------- .../repositories/UserSettingsRepository.kt | 2 +- .../userSettings/FetchAdvertisingIdUseCase.kt | 15 +++++++++++++++ .../usecases/userSettings/FetchGaIdUseCase.kt | 16 ---------------- 13 files changed, 50 insertions(+), 60 deletions(-) create mode 100644 personalization-sdk/src/main/kotlin/com/personalization/sdk/data/repositories/advertising/AdvertisingRepositoryImpl.kt delete mode 100644 personalization-sdk/src/main/kotlin/com/personalization/sdk/data/repositories/gaid/GaIdDataSource.kt delete mode 100644 personalization-sdk/src/main/kotlin/com/personalization/sdk/data/repositories/gaid/GaIdRepositoryImpl.kt create mode 100644 personalization-sdk/src/main/kotlin/com/personalization/sdk/domain/repositories/AdvertisingRepository.kt delete mode 100644 personalization-sdk/src/main/kotlin/com/personalization/sdk/domain/repositories/GaIdRepository.kt create mode 100644 personalization-sdk/src/main/kotlin/com/personalization/sdk/domain/usecases/userSettings/FetchAdvertisingIdUseCase.kt delete mode 100644 personalization-sdk/src/main/kotlin/com/personalization/sdk/domain/usecases/userSettings/FetchGaIdUseCase.kt diff --git a/personalization-sdk/src/main/kotlin/com/personalization/SDK.kt b/personalization-sdk/src/main/kotlin/com/personalization/SDK.kt index 7258bb22..85774418 100644 --- a/personalization-sdk/src/main/kotlin/com/personalization/SDK.kt +++ b/personalization-sdk/src/main/kotlin/com/personalization/SDK.kt @@ -29,7 +29,7 @@ import com.personalization.sdk.domain.usecases.preferences.InitPreferencesUseCas import com.personalization.sdk.domain.usecases.recommendation.SetRecommendedByUseCase import com.personalization.sdk.domain.usecases.userSettings.GetUserSettingsValueUseCase import com.personalization.sdk.domain.usecases.userSettings.InitUserSettingsUseCase -import com.personalization.sdk.domain.usecases.userSettings.FetchGaIdUseCase +import com.personalization.sdk.domain.usecases.userSettings.FetchAdvertisingIdUseCase import com.personalization.stories.StoriesManager import com.personalization.stories.views.StoriesView import com.personalization.utils.DomainFormattingUtils.formatApiDomain @@ -107,7 +107,7 @@ open class SDK { lateinit var notificationHelper: NotificationHelper @Inject - lateinit var fetchGaIdUseCase: FetchGaIdUseCase + lateinit var fetchAdvertisingIdUseCase: FetchAdvertisingIdUseCase /** * @param shopId Shop key @@ -162,7 +162,7 @@ open class SDK { ) CoroutineScope(Dispatchers.IO).launch { - fetchGaIdUseCase.invoke(context) + fetchAdvertisingIdUseCase.invoke() } } 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 b500a074..65db89c5 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 @@ -1,6 +1,5 @@ package com.personalization.sdk.data.di -import com.personalization.sdk.data.repositories.gaid.GaIdDataSource import com.personalization.sdk.data.repositories.network.NetworkDataSource import com.personalization.sdk.data.repositories.notification.NotificationDataSource import com.personalization.sdk.data.repositories.preferences.PreferencesDataSource @@ -45,8 +44,4 @@ class DataSourcesModule { ) = NotificationDataSource( preferencesDataSource = preferencesDataSource ) - - @Provides - @Singleton - fun provideGaIdDataSource() = GaIdDataSource() } 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 7da2bf8a..f309a454 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 @@ -1,12 +1,12 @@ package com.personalization.sdk.data.di -import com.personalization.sdk.data.repositories.gaid.GaIdRepositoryImpl +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.preferences.PreferencesRepositoryImpl import com.personalization.sdk.data.repositories.recommendation.RecommendationRepositoryImpl import com.personalization.sdk.data.repositories.userSettings.UserSettingsRepositoryImpl -import com.personalization.sdk.domain.repositories.GaIdRepository +import com.personalization.sdk.domain.repositories.AdvertisingRepository import com.personalization.sdk.domain.repositories.NetworkRepository import com.personalization.sdk.domain.repositories.NotificationRepository import com.personalization.sdk.domain.repositories.PreferencesRepository @@ -37,6 +37,6 @@ abstract class RepositoriesModule { abstract fun bindNotificationRepository(impl: NotificationRepositoryImpl): NotificationRepository @Binds - abstract fun bindGaIdRepository(impl: GaIdRepositoryImpl): GaIdRepository + abstract fun bindAdvertisingRepository(impl: AdvertisingRepositoryImpl): AdvertisingRepository } diff --git a/personalization-sdk/src/main/kotlin/com/personalization/sdk/data/repositories/advertising/AdvertisingRepositoryImpl.kt b/personalization-sdk/src/main/kotlin/com/personalization/sdk/data/repositories/advertising/AdvertisingRepositoryImpl.kt new file mode 100644 index 00000000..2e700ebf --- /dev/null +++ b/personalization-sdk/src/main/kotlin/com/personalization/sdk/data/repositories/advertising/AdvertisingRepositoryImpl.kt @@ -0,0 +1,18 @@ +package com.personalization.sdk.data.repositories.advertising + +import android.content.Context +import com.google.android.gms.ads.identifier.AdvertisingIdClient +import com.personalization.sdk.domain.repositories.AdvertisingRepository +import javax.inject.Inject + +class AdvertisingRepositoryImpl @Inject constructor( + private val context: Context +) : AdvertisingRepository { + override suspend fun fetchAdvertisingId(): String = + try { + AdvertisingIdClient.getAdvertisingIdInfo(context).id + } catch (e: Exception) { + "00000000-0000-0000-0000-000000000000" + } + +} \ No newline at end of file diff --git a/personalization-sdk/src/main/kotlin/com/personalization/sdk/data/repositories/gaid/GaIdDataSource.kt b/personalization-sdk/src/main/kotlin/com/personalization/sdk/data/repositories/gaid/GaIdDataSource.kt deleted file mode 100644 index ede6bd69..00000000 --- a/personalization-sdk/src/main/kotlin/com/personalization/sdk/data/repositories/gaid/GaIdDataSource.kt +++ /dev/null @@ -1,9 +0,0 @@ -package com.personalization.sdk.data.repositories.gaid - -import android.content.Context -import com.google.android.gms.ads.identifier.AdvertisingIdClient - -class GaIdDataSource { - internal fun fetchGaId(context: Context): String = - AdvertisingIdClient.getAdvertisingIdInfo(context).id -} \ No newline at end of file diff --git a/personalization-sdk/src/main/kotlin/com/personalization/sdk/data/repositories/gaid/GaIdRepositoryImpl.kt b/personalization-sdk/src/main/kotlin/com/personalization/sdk/data/repositories/gaid/GaIdRepositoryImpl.kt deleted file mode 100644 index 9aa16b1f..00000000 --- a/personalization-sdk/src/main/kotlin/com/personalization/sdk/data/repositories/gaid/GaIdRepositoryImpl.kt +++ /dev/null @@ -1,12 +0,0 @@ -package com.personalization.sdk.data.repositories.gaid - -import android.content.Context -import com.personalization.sdk.domain.repositories.GaIdRepository -import javax.inject.Inject - -class GaIdRepositoryImpl @Inject constructor( - private val gaIdDataSource: GaIdDataSource -) : GaIdRepository { - override suspend fun fetchAdId(context: Context): String = - gaIdDataSource.fetchGaId(context) -} \ No newline at end of file diff --git a/personalization-sdk/src/main/kotlin/com/personalization/sdk/data/repositories/userSettings/UserSettingsDataSource.kt b/personalization-sdk/src/main/kotlin/com/personalization/sdk/data/repositories/userSettings/UserSettingsDataSource.kt index 38937e33..c72a7696 100644 --- a/personalization-sdk/src/main/kotlin/com/personalization/sdk/data/repositories/userSettings/UserSettingsDataSource.kt +++ b/personalization-sdk/src/main/kotlin/com/personalization/sdk/data/repositories/userSettings/UserSettingsDataSource.kt @@ -52,7 +52,8 @@ class UserSettingsDataSource @AssistedInject constructor( internal fun saveDid(value: String) = preferencesDataSource.saveValue(DID_KEY, value) internal fun removeDid() = preferencesDataSource.removeValue(DID_KEY) - internal fun saveGAID(value: String) = preferencesDataSource.saveValue(GAID_KEY, value) + internal fun saveAdvertisingId(value: String) = + preferencesDataSource.saveValue(ADVERTISING_ID_KEY, value) internal fun getIsInitialized(): Boolean = isInitialized internal fun setIsInitialized(value: Boolean) { @@ -67,7 +68,7 @@ class UserSettingsDataSource @AssistedInject constructor( private const val DID_KEY = "did" private const val SID_KEY = "sid" - private const val GAID_KEY = "google_ad_id" + private const val ADVERTISING_ID_KEY = "google_ad_id" private const val SID_LAST_ACT_KEY = "sid_last_act" } } diff --git a/personalization-sdk/src/main/kotlin/com/personalization/sdk/data/repositories/userSettings/UserSettingsRepositoryImpl.kt b/personalization-sdk/src/main/kotlin/com/personalization/sdk/data/repositories/userSettings/UserSettingsRepositoryImpl.kt index c464102f..328c0907 100644 --- a/personalization-sdk/src/main/kotlin/com/personalization/sdk/data/repositories/userSettings/UserSettingsRepositoryImpl.kt +++ b/personalization-sdk/src/main/kotlin/com/personalization/sdk/data/repositories/userSettings/UserSettingsRepositoryImpl.kt @@ -59,8 +59,8 @@ class UserSettingsRepositoryImpl @Inject constructor( userSettingsDataSource.setIsInitialized(value) } - override fun saveGaId(value: String) { - userSettingsDataSource.saveGAID(value) + override fun saveAdvertisingId(value: String) { + userSettingsDataSource.saveAdvertisingId(value) } override fun addParams( diff --git a/personalization-sdk/src/main/kotlin/com/personalization/sdk/domain/repositories/AdvertisingRepository.kt b/personalization-sdk/src/main/kotlin/com/personalization/sdk/domain/repositories/AdvertisingRepository.kt new file mode 100644 index 00000000..a7c36dec --- /dev/null +++ b/personalization-sdk/src/main/kotlin/com/personalization/sdk/domain/repositories/AdvertisingRepository.kt @@ -0,0 +1,5 @@ +package com.personalization.sdk.domain.repositories + +interface AdvertisingRepository { + suspend fun fetchAdvertisingId(): String +} \ No newline at end of file diff --git a/personalization-sdk/src/main/kotlin/com/personalization/sdk/domain/repositories/GaIdRepository.kt b/personalization-sdk/src/main/kotlin/com/personalization/sdk/domain/repositories/GaIdRepository.kt deleted file mode 100644 index ab147eee..00000000 --- a/personalization-sdk/src/main/kotlin/com/personalization/sdk/domain/repositories/GaIdRepository.kt +++ /dev/null @@ -1,7 +0,0 @@ -package com.personalization.sdk.domain.repositories - -import android.content.Context - -interface GaIdRepository { - suspend fun fetchAdId(context: Context): String -} \ No newline at end of file diff --git a/personalization-sdk/src/main/kotlin/com/personalization/sdk/domain/repositories/UserSettingsRepository.kt b/personalization-sdk/src/main/kotlin/com/personalization/sdk/domain/repositories/UserSettingsRepository.kt index a5e3eb9e..68f9481b 100644 --- a/personalization-sdk/src/main/kotlin/com/personalization/sdk/domain/repositories/UserSettingsRepository.kt +++ b/personalization-sdk/src/main/kotlin/com/personalization/sdk/domain/repositories/UserSettingsRepository.kt @@ -24,7 +24,7 @@ interface UserSettingsRepository { fun getIsInitialized(): Boolean fun updateIsInitialized(value: Boolean) - fun saveGaId(value: String) + fun saveAdvertisingId(value: String) fun addParams( params: JSONObject, diff --git a/personalization-sdk/src/main/kotlin/com/personalization/sdk/domain/usecases/userSettings/FetchAdvertisingIdUseCase.kt b/personalization-sdk/src/main/kotlin/com/personalization/sdk/domain/usecases/userSettings/FetchAdvertisingIdUseCase.kt new file mode 100644 index 00000000..51182a81 --- /dev/null +++ b/personalization-sdk/src/main/kotlin/com/personalization/sdk/domain/usecases/userSettings/FetchAdvertisingIdUseCase.kt @@ -0,0 +1,15 @@ +package com.personalization.sdk.domain.usecases.userSettings + +import com.personalization.sdk.domain.repositories.AdvertisingRepository +import com.personalization.sdk.domain.repositories.UserSettingsRepository +import javax.inject.Inject + +class FetchAdvertisingIdUseCase @Inject constructor( + private val advertisingRepository: AdvertisingRepository, + private val userSettingsRepository: UserSettingsRepository +) { + suspend fun invoke() { + val advertisingId = advertisingRepository.fetchAdvertisingId() + userSettingsRepository.saveAdvertisingId(advertisingId) + } +} \ No newline at end of file diff --git a/personalization-sdk/src/main/kotlin/com/personalization/sdk/domain/usecases/userSettings/FetchGaIdUseCase.kt b/personalization-sdk/src/main/kotlin/com/personalization/sdk/domain/usecases/userSettings/FetchGaIdUseCase.kt deleted file mode 100644 index be7e2ce8..00000000 --- a/personalization-sdk/src/main/kotlin/com/personalization/sdk/domain/usecases/userSettings/FetchGaIdUseCase.kt +++ /dev/null @@ -1,16 +0,0 @@ -package com.personalization.sdk.domain.usecases.userSettings - -import android.content.Context -import com.personalization.sdk.domain.repositories.GaIdRepository -import com.personalization.sdk.domain.repositories.UserSettingsRepository -import javax.inject.Inject - -class FetchGaIdUseCase @Inject constructor( - private val gaIdRepository: GaIdRepository, - private val userSettingsRepository: UserSettingsRepository -) { - suspend fun invoke(context: Context) { - val gaId = gaIdRepository.fetchAdId(context) - userSettingsRepository.saveGaId(gaId) - } -} \ No newline at end of file From 1301e9145d2b4d61b49f805fd1aff2184210509b Mon Sep 17 00:00:00 2001 From: Arina Gazhina Date: Thu, 26 Dec 2024 15:01:00 +0300 Subject: [PATCH 3/7] feat: add getAdvertisingId method and refactor constants position --- .../advertising/AdvertisingRepositoryImpl.kt | 4 +++- .../userSettings/UserSettingsDataSource.kt | 24 ++++++++++--------- .../UserSettingsRepositoryImpl.kt | 3 +++ .../repositories/UserSettingsRepository.kt | 1 + .../GetUserSettingsValueUseCase.kt | 2 ++ 5 files changed, 22 insertions(+), 12 deletions(-) diff --git a/personalization-sdk/src/main/kotlin/com/personalization/sdk/data/repositories/advertising/AdvertisingRepositoryImpl.kt b/personalization-sdk/src/main/kotlin/com/personalization/sdk/data/repositories/advertising/AdvertisingRepositoryImpl.kt index 2e700ebf..8614280d 100644 --- a/personalization-sdk/src/main/kotlin/com/personalization/sdk/data/repositories/advertising/AdvertisingRepositoryImpl.kt +++ b/personalization-sdk/src/main/kotlin/com/personalization/sdk/data/repositories/advertising/AdvertisingRepositoryImpl.kt @@ -5,6 +5,8 @@ import com.google.android.gms.ads.identifier.AdvertisingIdClient import com.personalization.sdk.domain.repositories.AdvertisingRepository import javax.inject.Inject +private const val DEFAULT_ADVERTISING_ID = "00000000-0000-0000-0000-000000000000" + class AdvertisingRepositoryImpl @Inject constructor( private val context: Context ) : AdvertisingRepository { @@ -12,7 +14,7 @@ class AdvertisingRepositoryImpl @Inject constructor( try { AdvertisingIdClient.getAdvertisingIdInfo(context).id } catch (e: Exception) { - "00000000-0000-0000-0000-000000000000" + DEFAULT_ADVERTISING_ID } } \ No newline at end of file diff --git a/personalization-sdk/src/main/kotlin/com/personalization/sdk/data/repositories/userSettings/UserSettingsDataSource.kt b/personalization-sdk/src/main/kotlin/com/personalization/sdk/data/repositories/userSettings/UserSettingsDataSource.kt index c72a7696..703ec4d5 100644 --- a/personalization-sdk/src/main/kotlin/com/personalization/sdk/data/repositories/userSettings/UserSettingsDataSource.kt +++ b/personalization-sdk/src/main/kotlin/com/personalization/sdk/data/repositories/userSettings/UserSettingsDataSource.kt @@ -8,6 +8,16 @@ import dagger.assisted.Assisted import dagger.assisted.AssistedInject import org.json.JSONObject +private const val DEFAULT_DID = "" +private const val DEFAULT_SID = "" +private const val DEFAULT_ADVERTISING_ID = "00000000-0000-0000-0000-000000000000" +private const val DEFAULT_SID_LAST_ACT_TIME = 0L + +private const val DID_KEY = "did" +private const val SID_KEY = "sid" +private const val ADVERTISING_ID_KEY = "google_ad_id" +private const val SID_LAST_ACT_KEY = "sid_last_act" + class UserSettingsDataSource @AssistedInject constructor( private val preferencesDataSource: PreferencesDataSource, @Assisted("shopId") private val shopId: String, @@ -55,20 +65,12 @@ class UserSettingsDataSource @AssistedInject constructor( internal fun saveAdvertisingId(value: String) = preferencesDataSource.saveValue(ADVERTISING_ID_KEY, value) + internal fun getAdvertisingId() = + preferencesDataSource.getValue(ADVERTISING_ID_KEY, DEFAULT_ADVERTISING_ID) + internal fun getIsInitialized(): Boolean = isInitialized internal fun setIsInitialized(value: Boolean) { isInitialized = value } - companion object { - - private const val DEFAULT_DID = "" - private const val DEFAULT_SID = "" - private const val DEFAULT_SID_LAST_ACT_TIME = 0L - - private const val DID_KEY = "did" - private const val SID_KEY = "sid" - private const val ADVERTISING_ID_KEY = "google_ad_id" - private const val SID_LAST_ACT_KEY = "sid_last_act" - } } diff --git a/personalization-sdk/src/main/kotlin/com/personalization/sdk/data/repositories/userSettings/UserSettingsRepositoryImpl.kt b/personalization-sdk/src/main/kotlin/com/personalization/sdk/data/repositories/userSettings/UserSettingsRepositoryImpl.kt index 328c0907..9ffd851b 100644 --- a/personalization-sdk/src/main/kotlin/com/personalization/sdk/data/repositories/userSettings/UserSettingsRepositoryImpl.kt +++ b/personalization-sdk/src/main/kotlin/com/personalization/sdk/data/repositories/userSettings/UserSettingsRepositoryImpl.kt @@ -63,6 +63,9 @@ class UserSettingsRepositoryImpl @Inject constructor( userSettingsDataSource.saveAdvertisingId(value) } + override fun getAdvertisingId(): String = + userSettingsDataSource.getAdvertisingId() + override fun addParams( params: JSONObject, notificationSource: NotificationSource? diff --git a/personalization-sdk/src/main/kotlin/com/personalization/sdk/domain/repositories/UserSettingsRepository.kt b/personalization-sdk/src/main/kotlin/com/personalization/sdk/domain/repositories/UserSettingsRepository.kt index 68f9481b..d3421ff3 100644 --- a/personalization-sdk/src/main/kotlin/com/personalization/sdk/domain/repositories/UserSettingsRepository.kt +++ b/personalization-sdk/src/main/kotlin/com/personalization/sdk/domain/repositories/UserSettingsRepository.kt @@ -25,6 +25,7 @@ interface UserSettingsRepository { fun updateIsInitialized(value: Boolean) fun saveAdvertisingId(value: String) + fun getAdvertisingId(): String fun addParams( params: JSONObject, diff --git a/personalization-sdk/src/main/kotlin/com/personalization/sdk/domain/usecases/userSettings/GetUserSettingsValueUseCase.kt b/personalization-sdk/src/main/kotlin/com/personalization/sdk/domain/usecases/userSettings/GetUserSettingsValueUseCase.kt index 48010aea..9807d321 100644 --- a/personalization-sdk/src/main/kotlin/com/personalization/sdk/domain/usecases/userSettings/GetUserSettingsValueUseCase.kt +++ b/personalization-sdk/src/main/kotlin/com/personalization/sdk/domain/usecases/userSettings/GetUserSettingsValueUseCase.kt @@ -16,4 +16,6 @@ class GetUserSettingsValueUseCase @Inject constructor( fun getSidLastActTime(): Long = userSettingsRepository.getSidLastActTime() fun getIsInitialized(): Boolean = userSettingsRepository.getIsInitialized() + + fun getAdvertisingId(): String = userSettingsRepository.getAdvertisingId() } From c6e6a6523c0d8150f5a1470dc4c02fe5fdc0f5f4 Mon Sep 17 00:00:00 2001 From: Arina Gazhina Date: Thu, 26 Dec 2024 20:57:17 +0300 Subject: [PATCH 4/7] fix: make InitializeAdvertisingIdUseCase internal --- .../src/main/kotlin/com/personalization/SDK.kt | 10 +++++----- .../advertising/AdvertisingRepositoryImpl.kt | 2 +- ...gIdUseCase.kt => InitializeAdvertisingIdUseCase.kt} | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) rename personalization-sdk/src/main/kotlin/com/personalization/sdk/domain/usecases/userSettings/{FetchAdvertisingIdUseCase.kt => InitializeAdvertisingIdUseCase.kt} (88%) diff --git a/personalization-sdk/src/main/kotlin/com/personalization/SDK.kt b/personalization-sdk/src/main/kotlin/com/personalization/SDK.kt index 85774418..ad7c1950 100644 --- a/personalization-sdk/src/main/kotlin/com/personalization/SDK.kt +++ b/personalization-sdk/src/main/kotlin/com/personalization/SDK.kt @@ -29,7 +29,7 @@ import com.personalization.sdk.domain.usecases.preferences.InitPreferencesUseCas import com.personalization.sdk.domain.usecases.recommendation.SetRecommendedByUseCase import com.personalization.sdk.domain.usecases.userSettings.GetUserSettingsValueUseCase import com.personalization.sdk.domain.usecases.userSettings.InitUserSettingsUseCase -import com.personalization.sdk.domain.usecases.userSettings.FetchAdvertisingIdUseCase +import com.personalization.sdk.domain.usecases.userSettings.InitializeAdvertisingIdUseCase import com.personalization.stories.StoriesManager import com.personalization.stories.views.StoriesView import com.personalization.utils.DomainFormattingUtils.formatApiDomain @@ -49,6 +49,9 @@ open class SDK { private var onMessageListener: OnMessageListener? = null private var search: Search = Search(JSONObject()) + @Inject + internal lateinit var initializeAdvertisingIdUseCase: InitializeAdvertisingIdUseCase + @Inject lateinit var notificationHandler: NotificationHandler @@ -106,9 +109,6 @@ open class SDK { @Inject lateinit var notificationHelper: NotificationHelper - @Inject - lateinit var fetchAdvertisingIdUseCase: FetchAdvertisingIdUseCase - /** * @param shopId Shop key */ @@ -162,7 +162,7 @@ open class SDK { ) CoroutineScope(Dispatchers.IO).launch { - fetchAdvertisingIdUseCase.invoke() + initializeAdvertisingIdUseCase.invoke() } } diff --git a/personalization-sdk/src/main/kotlin/com/personalization/sdk/data/repositories/advertising/AdvertisingRepositoryImpl.kt b/personalization-sdk/src/main/kotlin/com/personalization/sdk/data/repositories/advertising/AdvertisingRepositoryImpl.kt index 8614280d..3f4f6b1b 100644 --- a/personalization-sdk/src/main/kotlin/com/personalization/sdk/data/repositories/advertising/AdvertisingRepositoryImpl.kt +++ b/personalization-sdk/src/main/kotlin/com/personalization/sdk/data/repositories/advertising/AdvertisingRepositoryImpl.kt @@ -17,4 +17,4 @@ class AdvertisingRepositoryImpl @Inject constructor( DEFAULT_ADVERTISING_ID } -} \ No newline at end of file +} diff --git a/personalization-sdk/src/main/kotlin/com/personalization/sdk/domain/usecases/userSettings/FetchAdvertisingIdUseCase.kt b/personalization-sdk/src/main/kotlin/com/personalization/sdk/domain/usecases/userSettings/InitializeAdvertisingIdUseCase.kt similarity index 88% rename from personalization-sdk/src/main/kotlin/com/personalization/sdk/domain/usecases/userSettings/FetchAdvertisingIdUseCase.kt rename to personalization-sdk/src/main/kotlin/com/personalization/sdk/domain/usecases/userSettings/InitializeAdvertisingIdUseCase.kt index 51182a81..ee72dac1 100644 --- a/personalization-sdk/src/main/kotlin/com/personalization/sdk/domain/usecases/userSettings/FetchAdvertisingIdUseCase.kt +++ b/personalization-sdk/src/main/kotlin/com/personalization/sdk/domain/usecases/userSettings/InitializeAdvertisingIdUseCase.kt @@ -4,7 +4,7 @@ import com.personalization.sdk.domain.repositories.AdvertisingRepository import com.personalization.sdk.domain.repositories.UserSettingsRepository import javax.inject.Inject -class FetchAdvertisingIdUseCase @Inject constructor( +internal class InitializeAdvertisingIdUseCase @Inject constructor( private val advertisingRepository: AdvertisingRepository, private val userSettingsRepository: UserSettingsRepository ) { From 242ad4815caf227d002e4b17f1456b78c39e0a98 Mon Sep 17 00:00:00 2001 From: Arina Gazhina Date: Thu, 26 Dec 2024 21:56:39 +0300 Subject: [PATCH 5/7] feat: add function to retrieve Advertising ID --- .../src/main/kotlin/com/personalization/SDK.kt | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/personalization-sdk/src/main/kotlin/com/personalization/SDK.kt b/personalization-sdk/src/main/kotlin/com/personalization/SDK.kt index ad7c1950..694ed012 100644 --- a/personalization-sdk/src/main/kotlin/com/personalization/SDK.kt +++ b/personalization-sdk/src/main/kotlin/com/personalization/SDK.kt @@ -231,6 +231,11 @@ open class SDK { */ fun getSid(): String = getUserSettingsValueUseCase.getSid() + /** + * Return the Advertising ID + */ + fun getAdvertisingId(): String = getUserSettingsValueUseCase.getAdvertisingId() + /** * Returns the session ID */ From 8a1f63676a802dbcf1f9f67121299ae39282362b Mon Sep 17 00:00:00 2001 From: Arina Gazhina Date: Fri, 10 Jan 2025 16:12:14 +0300 Subject: [PATCH 6/7] fix: generate default advertising ID using UUID to avoid typos --- .../advertising/AdvertisingRepositoryImpl.kt | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/personalization-sdk/src/main/kotlin/com/personalization/sdk/data/repositories/advertising/AdvertisingRepositoryImpl.kt b/personalization-sdk/src/main/kotlin/com/personalization/sdk/data/repositories/advertising/AdvertisingRepositoryImpl.kt index 3f4f6b1b..62130e99 100644 --- a/personalization-sdk/src/main/kotlin/com/personalization/sdk/data/repositories/advertising/AdvertisingRepositoryImpl.kt +++ b/personalization-sdk/src/main/kotlin/com/personalization/sdk/data/repositories/advertising/AdvertisingRepositoryImpl.kt @@ -3,10 +3,9 @@ package com.personalization.sdk.data.repositories.advertising import android.content.Context import com.google.android.gms.ads.identifier.AdvertisingIdClient import com.personalization.sdk.domain.repositories.AdvertisingRepository +import java.util.UUID import javax.inject.Inject -private const val DEFAULT_ADVERTISING_ID = "00000000-0000-0000-0000-000000000000" - class AdvertisingRepositoryImpl @Inject constructor( private val context: Context ) : AdvertisingRepository { @@ -14,7 +13,11 @@ class AdvertisingRepositoryImpl @Inject constructor( try { AdvertisingIdClient.getAdvertisingIdInfo(context).id } catch (e: Exception) { - DEFAULT_ADVERTISING_ID + generateDefaultAdvertisingId() } + private fun generateDefaultAdvertisingId(): String { + return UUID(0L, 0L).toString() + } + } From 7e4c9ba56c0602d97cd36104f5a1f3db73b6817a Mon Sep 17 00:00:00 2001 From: Arina Gazhina Date: Fri, 10 Jan 2025 16:14:13 +0300 Subject: [PATCH 7/7] refactor: add empty lines --- .../sdk/domain/repositories/AdvertisingRepository.kt | 2 +- .../usecases/userSettings/InitializeAdvertisingIdUseCase.kt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/personalization-sdk/src/main/kotlin/com/personalization/sdk/domain/repositories/AdvertisingRepository.kt b/personalization-sdk/src/main/kotlin/com/personalization/sdk/domain/repositories/AdvertisingRepository.kt index a7c36dec..fbfbe04f 100644 --- a/personalization-sdk/src/main/kotlin/com/personalization/sdk/domain/repositories/AdvertisingRepository.kt +++ b/personalization-sdk/src/main/kotlin/com/personalization/sdk/domain/repositories/AdvertisingRepository.kt @@ -2,4 +2,4 @@ package com.personalization.sdk.domain.repositories interface AdvertisingRepository { suspend fun fetchAdvertisingId(): String -} \ No newline at end of file +} diff --git a/personalization-sdk/src/main/kotlin/com/personalization/sdk/domain/usecases/userSettings/InitializeAdvertisingIdUseCase.kt b/personalization-sdk/src/main/kotlin/com/personalization/sdk/domain/usecases/userSettings/InitializeAdvertisingIdUseCase.kt index ee72dac1..d31b4dd1 100644 --- a/personalization-sdk/src/main/kotlin/com/personalization/sdk/domain/usecases/userSettings/InitializeAdvertisingIdUseCase.kt +++ b/personalization-sdk/src/main/kotlin/com/personalization/sdk/domain/usecases/userSettings/InitializeAdvertisingIdUseCase.kt @@ -12,4 +12,4 @@ internal class InitializeAdvertisingIdUseCase @Inject constructor( val advertisingId = advertisingRepository.fetchAdvertisingId() userSettingsRepository.saveAdvertisingId(advertisingId) } -} \ No newline at end of file +}