authentification
KaulH 1 year ago
parent 07252b9025
commit 72577b8505

@ -73,6 +73,7 @@ dependencies {
implementation(libs.retrofit.adapters.arrow)
implementation(libs.arrow.core)
implementation(libs.androidx.navigation.compose)
testImplementation(libs.junit)
androidTestImplementation(libs.androidx.junit)

@ -8,9 +8,14 @@ import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Surface
import androidx.compose.runtime.Composable
import androidx.compose.runtime.MutableState
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.ui.Modifier
import androidx.navigation.compose.NavHost
import androidx.navigation.compose.composable
import androidx.navigation.compose.rememberNavController
import com.google.gson.Gson
import com.iqball.app.api.EitherBodyConverter
import com.iqball.app.api.EitherCallAdapterFactory
@ -63,22 +68,35 @@ class MainActivity : ComponentActivity() {
@Composable
fun App(service: IQBallService, sessionState: MutableState<Session>) {
val navController = rememberNavController()
val registerPage: @Composable () -> Unit = {
RegisterPage(service = service, onRegisterSuccess = { auth ->
NavHost(navController = navController, startDestination = "login") {
composable("login") {
LoginPage(
service = service,
onLoginSuccess = { auth ->
sessionState.value = DataSession(auth)
})
navController.navigate("home")
},
onNavigateToRegister = {
navController.navigate("register")
}
val loginPage: @Composable () -> Unit = {
LoginPage(service = service, onLoginSuccess = { auth ->
)
}
composable("register") {
RegisterPage(
service = service,
onRegisterSuccess = { auth ->
sessionState.value = DataSession(auth)
})
navController.navigate("home")
},
onNavigateToLogin = {
navController.navigate("login")
}
)
}
composable("home") {
HomePage(service = service, session = sessionState.value)
}
}
val homePage : @Composable () -> Unit = { HomePage(service, sessionState.value) }
//registerPage()
val currentPage = remember(sessionState.value.auth) { if (sessionState.value.auth == null) loginPage else homePage }
currentPage()
}

@ -20,7 +20,11 @@ import kotlinx.coroutines.runBlocking
@Composable
fun LoginPage(service: AuthService, onLoginSuccess: (Authentication) -> Unit) {
fun LoginPage(
service: AuthService,
onLoginSuccess: (Authentication) -> Unit,
onNavigateToRegister: () -> Unit
) {
var email by remember { mutableStateOf("") }
var password by remember { mutableStateOf("") }
var errors by remember { mutableStateOf("") }
@ -87,6 +91,10 @@ fun LoginPage(service: AuthService, onLoginSuccess: (Authentication) -> Unit) {
}) {
Text(text = "Se connecter")
}
Spacer(modifier = Modifier.height(16.dp))
Button(onClick = { onNavigateToRegister() }) {
Text(text = "Vous n'avez pas de compte ?")
}
}
}
}

@ -28,7 +28,11 @@ import com.iqball.app.session.Authentication
import kotlinx.coroutines.runBlocking
@Composable
fun RegisterPage(service: AuthService, onRegisterSuccess: (Authentication) -> Unit) {
fun RegisterPage(
service: AuthService,
onRegisterSuccess: (Authentication) -> Unit,
onNavigateToLogin: () -> Unit
) {
var username by remember { mutableStateOf("") }
var email by remember { mutableStateOf("") }
var password by remember { mutableStateOf("") }
@ -105,6 +109,10 @@ fun RegisterPage(service: AuthService, onRegisterSuccess: (Authentication) -> Un
}) {
Text(text = "Créer votre compte")
}
Spacer(modifier = Modifier.height(16.dp))
Button(onClick = { onNavigateToLogin() }) {
Text(text = "Vous avez déjà un compte ?")
}
}
}
}

@ -15,6 +15,7 @@ composeBom = "2023.08.00"
retrofit = "2.9.0"
retrofit2KotlinxSerializationConverter = "1.0.0"
retrofitAdaptersArrow = "1.0.9"
navigationCompose = "2.7.7"
[libraries]
androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "coreKtx" }
@ -38,6 +39,7 @@ kotlinx-serialization-json-jvm = { module = "org.jetbrains.kotlinx:kotlinx-seria
retrofit = { module = "com.squareup.retrofit2:retrofit", version.ref = "retrofit" }
retrofit-adapters-arrow = { module = "com.github.skydoves:retrofit-adapters-arrow", version.ref = "retrofitAdaptersArrow" }
retrofit2-kotlinx-serialization-converter = { module = "com.jakewharton.retrofit:retrofit2-kotlinx-serialization-converter", version.ref = "retrofit2KotlinxSerializationConverter" }
androidx-navigation-compose = { group = "androidx.navigation", name = "navigation-compose", version.ref = "navigationCompose" }
[plugins]
androidApplication = { id = "com.android.application", version.ref = "agp" }

Loading…
Cancel
Save