feat(CON-168) : [SDK] - Généré et manipuler l'id unique d'installation de l'application.

This commit is contained in:
2024-12-10 15:09:08 +01:00
parent 61ad631f28
commit afb0d01afa
4 changed files with 69 additions and 3 deletions

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
}
}
}