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