datastore actually working
This commit is contained in:
parent
51c0c32628
commit
6b1a4e5e96
@ -9,6 +9,7 @@ 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
|
||||
@ -17,6 +18,7 @@ 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
|
||||
@ -35,16 +37,21 @@ class MainActivity : ComponentActivity() {
|
||||
setContent {
|
||||
Nto_minipigsTheme {
|
||||
val dataStore = remember {
|
||||
UserData(this)
|
||||
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 ) }
|
||||
composable<Login> { LoginScreen( onNavigateToMain = { navController.navigate(route = Main)}, viewModel = loginViewModel, dataStore = dataStore ) }
|
||||
composable<Main> { MainScreen() }
|
||||
}
|
||||
}
|
||||
@ -59,7 +66,7 @@ class UserData(private val context: Context) {
|
||||
preferences[tokenKey]
|
||||
}
|
||||
|
||||
suspend fun updateName(data:String) =
|
||||
suspend fun updateToken(data:String) =
|
||||
context.dataStore.edit { settings ->
|
||||
settings[tokenKey] = data
|
||||
}
|
||||
|
@ -17,13 +17,19 @@ import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
import com.example.nto_minipigs.ui.theme.Nto_minipigsTheme
|
||||
import androidx.compose.runtime.getValue
|
||||
import androidx.compose.runtime.rememberCoroutineScope
|
||||
import androidx.compose.runtime.setValue
|
||||
import androidx.compose.ui.unit.dp
|
||||
import androidx.datastore.core.DataStore
|
||||
import com.example.nto_minipigs.LoginViewModel
|
||||
import com.example.nto_minipigs.UserData
|
||||
import kotlinx.coroutines.coroutineScope
|
||||
import kotlinx.coroutines.launch
|
||||
|
||||
@Composable
|
||||
fun LoginScreen( onNavigateToMain: () -> Unit, viewModel: LoginViewModel) {
|
||||
fun LoginScreen( onNavigateToMain: () -> Unit, viewModel: LoginViewModel, dataStore: UserData) {
|
||||
Nto_minipigsTheme {
|
||||
val cor = rememberCoroutineScope()
|
||||
Surface {
|
||||
Column(
|
||||
modifier = Modifier.fillMaxSize(),
|
||||
@ -56,7 +62,12 @@ fun LoginScreen( onNavigateToMain: () -> Unit, viewModel: LoginViewModel) {
|
||||
)
|
||||
|
||||
Button(
|
||||
onClick = { viewModel.getData(login, onNavigateToMain) },
|
||||
onClick = {
|
||||
viewModel.getData(login, onNavigateToMain)
|
||||
cor.launch {
|
||||
dataStore.updateToken("yenis")
|
||||
}
|
||||
},
|
||||
shape = RoundedCornerShape(12.dp),
|
||||
) {
|
||||
Text(text = "Sign In", style = MaterialTheme.typography.bodyLarge)
|
||||
|
Loading…
x
Reference in New Issue
Block a user