feat(CON-168) : [SDK] - Généré et manipuler l'id unique d'installation de l'application. #1
@ -14,4 +14,7 @@ plugins {
|
||||
|
||||
// Agp
|
||||
alias(libs.plugins.android.library) apply false
|
||||
|
||||
// Hilt
|
||||
alias(libs.plugins.hilt) apply false
|
||||
}
|
@ -1,6 +1,8 @@
|
||||
plugins {
|
||||
alias(libs.plugins.android.library)
|
||||
alias(libs.plugins.kotlin.android)
|
||||
alias(libs.plugins.hilt)
|
||||
alias(libs.plugins.ksp)
|
||||
}
|
||||
|
||||
android {
|
||||
@ -30,11 +32,17 @@ android {
|
||||
}
|
||||
|
||||
dependencies {
|
||||
|
||||
// AndroidX
|
||||
implementation(libs.androidx.core.ktx)
|
||||
implementation(libs.androidx.appcompat)
|
||||
|
||||
// Preferences data store
|
||||
implementation(libs.preferencesDataStore)
|
||||
|
||||
// Hilt
|
||||
implementation(libs.hilt.android)
|
||||
ksp(libs.hilt.compiler)
|
||||
|
||||
// Test
|
||||
testImplementation(libs.test.junit)
|
||||
androidTestImplementation(libs.androidx.junit)
|
||||
|
@ -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
|
||||
}
|
||||
}
|
||||
}
|
@ -14,7 +14,7 @@ appcompat = "1.7.0"
|
||||
lifecycle = "2.8.7"
|
||||
|
||||
# Hilt
|
||||
hilt = "2.50"
|
||||
hilt = "2.51.1"
|
||||
hiltNavigation = "1.2.0"
|
||||
|
||||
# Compose
|
||||
@ -31,6 +31,9 @@ junit = "4.13.2"
|
||||
espressoCore = "3.6.1"
|
||||
junitExtVersion = "1.2.1"
|
||||
|
||||
# Preferences DataStore
|
||||
preferencesDataStore = "1.1.1"
|
||||
|
||||
# Plugins
|
||||
agp = "8.7.3"
|
||||
kotlin = "2.0.0"
|
||||
@ -51,7 +54,7 @@ androidx-lifecycle-compose = { group = "androidx.lifecycle", name = "lifecycle-r
|
||||
|
||||
# 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" }
|
||||
|
||||
# Timber
|
||||
@ -67,6 +70,9 @@ compose-material3 = { group = "androidx.compose.material3", name = "material3" }
|
||||
# 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-junit = { group = "junit", name = "junit", version.ref = "junit" }
|
||||
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" }
|
||||
ksp = { id = "com.google.devtools.ksp", version.ref = "ksp" }
|
||||
android-library = { id = "com.android.library", version.ref = "agp" }
|
||||
hilt = { id = "com.google.dagger.hilt.android", version.ref = "hilt" }
|
||||
|
||||
[bundles]
|
||||
androidx = ["androidx-core-ktx", "androidx-activity-compose"]
|
||||
|
Loading…
x
Reference in New Issue
Block a user