Merge pull request 'feat(CON-168) : [SDK] - Généré et manipuler l'id unique d'installation de l'application.' (#1) from feat(CON-168) into develop

Reviewed-on: #1
This commit is contained in:
Louis Legrand 2024-12-11 09:06:01 +01:00
commit 8dfc0b6cb5
4 changed files with 69 additions and 3 deletions

View File

@ -14,4 +14,7 @@ plugins {
// Agp // Agp
alias(libs.plugins.android.library) apply false alias(libs.plugins.android.library) apply false
// Hilt
alias(libs.plugins.hilt) apply false
} }

View File

@ -1,6 +1,8 @@
plugins { plugins {
alias(libs.plugins.android.library) alias(libs.plugins.android.library)
alias(libs.plugins.kotlin.android) alias(libs.plugins.kotlin.android)
alias(libs.plugins.hilt)
alias(libs.plugins.ksp)
} }
android { android {
@ -30,11 +32,17 @@ android {
} }
dependencies { dependencies {
// AndroidX // AndroidX
implementation(libs.androidx.core.ktx) implementation(libs.androidx.core.ktx)
implementation(libs.androidx.appcompat) implementation(libs.androidx.appcompat)
// Preferences data store
implementation(libs.preferencesDataStore)
// Hilt
implementation(libs.hilt.android)
ksp(libs.hilt.compiler)
// Test // Test
testImplementation(libs.test.junit) testImplementation(libs.test.junit)
androidTestImplementation(libs.androidx.junit) androidTestImplementation(libs.androidx.junit)

View File

@ -0,0 +1,48 @@
package fr.openium.consentium.data.local
import android.content.Context
import androidx.datastore.core.DataStore
import androidx.datastore.preferences.core.Preferences
import androidx.datastore.preferences.core.edit
import androidx.datastore.preferences.core.stringPreferencesKey
import androidx.datastore.preferences.preferencesDataStore
import dagger.hilt.android.qualifiers.ApplicationContext
import kotlinx.coroutines.flow.firstOrNull
import kotlinx.coroutines.flow.map
import kotlinx.coroutines.runBlocking
import java.util.UUID
import javax.inject.Inject
private val DATASTORE_NAME = "consentium_datastore"
val Context.dataStore: DataStore<Preferences> by preferencesDataStore(name = DATASTORE_NAME)
internal class ConsentiumDataStore @Inject constructor(@ApplicationContext context: Context) {
companion object {
// Installation unique id
private val INSTALLATION_UNIQUE_ID = stringPreferencesKey("INSTALLATION_UNIQUE_ID")
}
private val _dataStore = context.dataStore
fun getInstallationUniqueId(): String =
runBlocking {
val uuid : String ? = _dataStore.data.map { prefs ->
prefs[INSTALLATION_UNIQUE_ID]
}.firstOrNull()
if (uuid == null) {
val newUuid = UUID.randomUUID().toString()
setInstallationUniqueId(newUuid)
newUuid
} else {
uuid
}
}
private suspend fun setInstallationUniqueId(installationUniqueId: String) {
_dataStore.edit { prefs ->
prefs[INSTALLATION_UNIQUE_ID] = installationUniqueId
}
}
}

View File

@ -14,7 +14,7 @@ appcompat = "1.7.0"
lifecycle = "2.8.7" lifecycle = "2.8.7"
# Hilt # Hilt
hilt = "2.50" hilt = "2.51.1"
hiltNavigation = "1.2.0" hiltNavigation = "1.2.0"
# Compose # Compose
@ -31,6 +31,9 @@ junit = "4.13.2"
espressoCore = "3.6.1" espressoCore = "3.6.1"
junitExtVersion = "1.2.1" junitExtVersion = "1.2.1"
# Preferences DataStore
preferencesDataStore = "1.1.1"
# Plugins # Plugins
agp = "8.7.3" agp = "8.7.3"
kotlin = "2.0.0" kotlin = "2.0.0"
@ -51,7 +54,7 @@ androidx-lifecycle-compose = { group = "androidx.lifecycle", name = "lifecycle-r
# Hilt # Hilt
hilt-android = { module = "com.google.dagger:hilt-android", version.ref = "hilt" } hilt-android = { module = "com.google.dagger:hilt-android", version.ref = "hilt" }
hilt-compiler = { module = "com.google.dagger:hilt-compiler", version.ref = "hilt" } hilt-compiler = { module = "com.google.dagger:hilt-android-compiler", version.ref = "hilt" }
hilt-navigation-compose = { module = "androidx.hilt:hilt-navigation-compose", version.ref = "hiltNavigation" } hilt-navigation-compose = { module = "androidx.hilt:hilt-navigation-compose", version.ref = "hiltNavigation" }
# Timber # Timber
@ -67,6 +70,9 @@ compose-material3 = { group = "androidx.compose.material3", name = "material3" }
# Material # Material
material = { group = "com.google.android.material", name = "material", version.ref = "material" } material = { group = "com.google.android.material", name = "material", version.ref = "material" }
# Preferences DataStore
preferencesDataStore = { group = "androidx.datastore", name = "datastore-preferences", version.ref = "preferencesDataStore" }
# Test # Test
test-junit = { group = "junit", name = "junit", version.ref = "junit" } test-junit = { group = "junit", name = "junit", version.ref = "junit" }
test-androidx-junit = { group = "androidx.test.ext", name = "junit-ktx", version.ref = "junitExtVersion" } test-androidx-junit = { group = "androidx.test.ext", name = "junit-ktx", version.ref = "junitExtVersion" }
@ -79,6 +85,7 @@ kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" }
kotlin-compose = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" } kotlin-compose = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" }
ksp = { id = "com.google.devtools.ksp", version.ref = "ksp" } ksp = { id = "com.google.devtools.ksp", version.ref = "ksp" }
android-library = { id = "com.android.library", version.ref = "agp" } android-library = { id = "com.android.library", version.ref = "agp" }
hilt = { id = "com.google.dagger.hilt.android", version.ref = "hilt" }
[bundles] [bundles]
androidx = ["androidx-core-ktx", "androidx-activity-compose"] androidx = ["androidx-core-ktx", "androidx-activity-compose"]