datastore fixed
This commit is contained in:
parent
aa918de503
commit
51c0c32628
@ -9,10 +9,12 @@ import androidx.activity.compose.setContent
|
|||||||
import androidx.activity.enableEdgeToEdge
|
import androidx.activity.enableEdgeToEdge
|
||||||
import androidx.compose.material3.Text
|
import androidx.compose.material3.Text
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
|
import androidx.compose.runtime.remember
|
||||||
import androidx.datastore.core.DataStore
|
import androidx.datastore.core.DataStore
|
||||||
import androidx.datastore.preferences.core.Preferences
|
import androidx.datastore.preferences.core.Preferences
|
||||||
import androidx.datastore.preferences.core.edit
|
import androidx.datastore.preferences.core.edit
|
||||||
import androidx.datastore.preferences.core.intPreferencesKey
|
import androidx.datastore.preferences.core.intPreferencesKey
|
||||||
|
import androidx.datastore.preferences.core.stringPreferencesKey
|
||||||
import androidx.datastore.preferences.preferencesDataStore
|
import androidx.datastore.preferences.preferencesDataStore
|
||||||
import androidx.lifecycle.ViewModelProvider
|
import androidx.lifecycle.ViewModelProvider
|
||||||
import androidx.navigation.compose.NavHost
|
import androidx.navigation.compose.NavHost
|
||||||
@ -25,23 +27,16 @@ import kotlinx.coroutines.flow.map
|
|||||||
import kotlinx.serialization.Serializable
|
import kotlinx.serialization.Serializable
|
||||||
|
|
||||||
class MainActivity : ComponentActivity() {
|
class MainActivity : ComponentActivity() {
|
||||||
val Context.dataStore: DataStore<Preferences> by preferencesDataStore(name = "settings")
|
|
||||||
val context = applicationContext
|
|
||||||
|
|
||||||
val EXAMPLE_COUNTER = intPreferencesKey("example_counter")
|
|
||||||
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
|
|
||||||
val exampleCounterFlow: Flow<Int> = context.dataStore.data
|
|
||||||
.map { preferences ->
|
|
||||||
// No type safety.
|
|
||||||
preferences[EXAMPLE_COUNTER] ?: 0
|
|
||||||
}
|
|
||||||
|
|
||||||
enableEdgeToEdge()
|
enableEdgeToEdge()
|
||||||
setContent {
|
setContent {
|
||||||
Nto_minipigsTheme {
|
Nto_minipigsTheme {
|
||||||
|
val dataStore = remember {
|
||||||
|
UserData(this)
|
||||||
|
}
|
||||||
val navController = rememberNavController()
|
val navController = rememberNavController()
|
||||||
val loginViewModel = ViewModelProvider(this)[LoginViewModel::class.java]
|
val loginViewModel = ViewModelProvider(this)[LoginViewModel::class.java]
|
||||||
|
|
||||||
@ -57,6 +52,23 @@ class MainActivity : ComponentActivity() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class UserData(private val context: Context) {
|
||||||
|
val Context.dataStore by preferencesDataStore("user_data")
|
||||||
|
|
||||||
|
val token = context.dataStore.data.map { preferences ->
|
||||||
|
preferences[tokenKey]
|
||||||
|
}
|
||||||
|
|
||||||
|
suspend fun updateName(data:String) =
|
||||||
|
context.dataStore.edit { settings ->
|
||||||
|
settings[tokenKey] = data
|
||||||
|
}
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
val tokenKey = stringPreferencesKey("Bearer")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Serializable
|
@Serializable
|
||||||
object Login
|
object Login
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user