2025-02-19 15:59:51 +03:00

89 lines
2.8 KiB
Kotlin

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<Login> { LoginScreen( onNavigateToMain = { navController.navigate(route = Main)}, viewModel = loginViewModel, dataStore = dataStore ) }
composable<Main> { 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")
}