package com.example.nto_minipigs import android.content.Context import android.content.SharedPreferences import android.os.Bundle import android.util.Log import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.activity.enableEdgeToEdge import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.remember import androidx.datastore.core.DataStore import androidx.datastore.preferences.core.Preferences import androidx.datastore.preferences.core.edit import androidx.datastore.preferences.core.intPreferencesKey import androidx.datastore.preferences.core.stringPreferencesKey import androidx.datastore.preferences.preferencesDataStore import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.compose.collectAsStateWithLifecycle import androidx.navigation.compose.NavHost import androidx.navigation.compose.composable import androidx.navigation.compose.rememberNavController import com.example.nto_minipigs.ui.screens.LoginScreen import com.example.nto_minipigs.ui.theme.Nto_minipigsTheme import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.map import kotlinx.serialization.Serializable class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) enableEdgeToEdge() setContent { Nto_minipigsTheme { val dataStore = remember { UserData(applicationContext) } val navController = rememberNavController() val loginViewModel = ViewModelProvider(this)[LoginViewModel::class.java] val token by dataStore.token.collectAsStateWithLifecycle("") Log.d("tokenn", token.toString()) NavHost( navController = navController, startDestination = Login ) { composable { LoginScreen( onNavigateToMain = { navController.navigate(route = Main)}, viewModel = loginViewModel, dataStore = dataStore ) } composable
{ MainScreen() } } } } } } class UserData(private val context: Context) { val Context.dataStore by preferencesDataStore("user_data") val token = context.dataStore.data.map { preferences -> preferences[tokenKey] } suspend fun updateToken(data:String) = context.dataStore.edit { settings -> settings[tokenKey] = data } companion object { val tokenKey = stringPreferencesKey("Bearer") } } @Serializable object Login @Serializable object Main @Composable fun MainScreen() { Text("Main") }