authentification
KaulH 1 year ago
parent 07252b9025
commit 72577b8505

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

@ -8,9 +8,14 @@ import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Surface import androidx.compose.material3.Surface
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.MutableState import androidx.compose.runtime.MutableState
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.ui.Modifier 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.google.gson.Gson
import com.iqball.app.api.EitherBodyConverter import com.iqball.app.api.EitherBodyConverter
import com.iqball.app.api.EitherCallAdapterFactory import com.iqball.app.api.EitherCallAdapterFactory
@ -63,22 +68,35 @@ class MainActivity : ComponentActivity() {
@Composable @Composable
fun App(service: IQBallService, sessionState: MutableState<Session>) { fun App(service: IQBallService, sessionState: MutableState<Session>) {
val navController = rememberNavController()
val registerPage: @Composable () -> Unit = { NavHost(navController = navController, startDestination = "login") {
RegisterPage(service = service, onRegisterSuccess = { auth -> composable("login") {
LoginPage(
service = service,
onLoginSuccess = { auth ->
sessionState.value = DataSession(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) 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 @Composable
fun LoginPage(service: AuthService, onLoginSuccess: (Authentication) -> Unit) { fun LoginPage(
service: AuthService,
onLoginSuccess: (Authentication) -> Unit,
onNavigateToRegister: () -> Unit
) {
var email by remember { mutableStateOf("") } var email by remember { mutableStateOf("") }
var password by remember { mutableStateOf("") } var password by remember { mutableStateOf("") }
var errors by remember { mutableStateOf("") } var errors by remember { mutableStateOf("") }
@ -87,6 +91,10 @@ fun LoginPage(service: AuthService, onLoginSuccess: (Authentication) -> Unit) {
}) { }) {
Text(text = "Se connecter") 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 import kotlinx.coroutines.runBlocking
@Composable @Composable
fun RegisterPage(service: AuthService, onRegisterSuccess: (Authentication) -> Unit) { fun RegisterPage(
service: AuthService,
onRegisterSuccess: (Authentication) -> Unit,
onNavigateToLogin: () -> Unit
) {
var username by remember { mutableStateOf("") } var username by remember { mutableStateOf("") }
var email by remember { mutableStateOf("") } var email by remember { mutableStateOf("") }
var password 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") 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" retrofit = "2.9.0"
retrofit2KotlinxSerializationConverter = "1.0.0" retrofit2KotlinxSerializationConverter = "1.0.0"
retrofitAdaptersArrow = "1.0.9" retrofitAdaptersArrow = "1.0.9"
navigationCompose = "2.7.7"
[libraries] [libraries]
androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "coreKtx" } 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 = { module = "com.squareup.retrofit2:retrofit", version.ref = "retrofit" }
retrofit-adapters-arrow = { module = "com.github.skydoves:retrofit-adapters-arrow", version.ref = "retrofitAdaptersArrow" } 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" } 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] [plugins]
androidApplication = { id = "com.android.application", version.ref = "agp" } androidApplication = { id = "com.android.application", version.ref = "agp" }

Loading…
Cancel
Save