feat : button retour et createPlayer (register)

androidCompose
Maxence GUITARD 1 year ago
parent fb17127303
commit b3fa0d740d

@ -5,9 +5,11 @@ import android.widget.Toast
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.foundation.Image
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.foundation.text.KeyboardOptions
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.ArrowBack
import androidx.compose.material3.*
import androidx.compose.runtime.*
import androidx.compose.ui.Alignment
@ -28,33 +30,55 @@ class ConnexionPlayerActivity : ComponentActivity() {
super.onCreate(savedInstanceState)
setContent {
MathsEducTheme {
ConnexionPlayerContent()
ConnexionPlayerContent(activity = this@ConnexionPlayerActivity)
}
}
}
}
@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun ConnexionPlayerContent() {
fun ConnexionPlayerContent(activity: ConnexionPlayerActivity) {
var nickname by remember { mutableStateOf("") }
var password by remember { mutableStateOf("") }
var showDialog by remember { mutableStateOf(false) }
val context = LocalContext.current
Column(modifier = Modifier.fillMaxSize()) {
TopAppBar(
colors = TopAppBarDefaults.topAppBarColors(
containerColor = Color.Transparent,
),
title = {},
navigationIcon = {
IconButton(
onClick = { activity.finish() },
modifier = Modifier.size(60.dp)
) {
Icon(
imageVector = Icons.Filled.ArrowBack,
contentDescription = "Retour",
modifier = Modifier.size(36.dp),
tint = Color.White
)
}
},
)
Column(
modifier = Modifier
.fillMaxSize()
.padding(16.dp),
.fillMaxWidth()
.padding(16.dp)
.weight(1f),
verticalArrangement = Arrangement.Center,
horizontalAlignment = Alignment.CenterHorizontally
) {
Image(
painter = painterResource(id = R.drawable.logo),
contentDescription = null,
modifier = Modifier
.size(160.dp, 130.dp)
.background(Color.Gray) // Replace with your background color
)
Spacer(modifier = Modifier.height(16.dp))
@ -65,7 +89,14 @@ fun ConnexionPlayerContent() {
label = { Text("Nickname") },
modifier = Modifier
.fillMaxWidth()
.padding(8.dp)
.padding(8.dp),
colors = OutlinedTextFieldDefaults.colors(
focusedContainerColor = Color.White,
unfocusedContainerColor = Color.White,
disabledContainerColor = Color.White,
focusedBorderColor = Color.Blue,
),
shape = RoundedCornerShape(8.dp)
)
OutlinedTextField(
@ -78,7 +109,14 @@ fun ConnexionPlayerContent() {
),
modifier = Modifier
.fillMaxWidth()
.padding(8.dp)
.padding(8.dp),
colors = OutlinedTextFieldDefaults.colors(
focusedContainerColor = Color.White,
unfocusedContainerColor = Color.White,
disabledContainerColor = Color.White,
focusedBorderColor = Color.Blue,
),
shape = RoundedCornerShape(8.dp)
)
Spacer(modifier = Modifier.height(16.dp))
@ -106,7 +144,9 @@ fun ConnexionPlayerContent() {
onClick = { showDialog = true },
modifier = Modifier
.fillMaxWidth()
.height(48.dp)
.height(48.dp),
colors = ButtonDefaults.buttonColors(
containerColor = Color(0xFF40E0D0))
) {
Text("Register")
}
@ -115,6 +155,7 @@ fun ConnexionPlayerContent() {
RegisterDialog(onDismiss = { showDialog = false })
}
}
}
}
@Composable
@ -132,7 +173,7 @@ fun RegisterDialog(onDismiss: () -> Unit) {
confirmButton = {
Button(
onClick = {
// Save the user information or perform registration
val playerId = ControllerPlayer.createPlayer(nickname, password)
onDismiss()
}
) {
@ -183,7 +224,8 @@ fun RegisterDialog(onDismiss: () -> Unit) {
@Preview(showBackground = true)
@Composable
fun ConnexionPlayerPreview() {
val fakeActivity = ConnexionPlayerActivity()
MathsEducTheme {
ConnexionPlayerContent()
ConnexionPlayerContent(activity = fakeActivity)
}
}

@ -62,6 +62,39 @@ class ControllerPlayer {
return null
}
fun createPlayer(nickname: String, password: String): Int {
val policy = StrictMode.ThreadPolicy.Builder().permitAll().build()
StrictMode.setThreadPolicy(policy)
val client = OkHttpClient()
val hashedPassword = BCrypt.hashpw(password, BCrypt.gensalt())
val requestBody = FormBody.Builder()
.add("nickname", nickname)
.add("password", hashedPassword)
.build()
val request = Request.Builder()
.url("https://trusting-panini.87-106-126-109.plesk.page/api/add/player/qUOGkWdoPCgbmuqxIC8xiaX0rV1Pw1LoPafkaoHOgszEyD9P2vcOu493xCDZpAqO")
.post(requestBody)
.build()
client.newCall(request).execute().use { response ->
if (response.isSuccessful) {
val responseData = response.body?.string()
val gson = Gson()
val player: Player = gson.fromJson(responseData, Player::class.java)
return player.id
} else {
throw IOException("Failed to create player: ${response.code}")
}
}
}
fun authenticateUser(nickname: String, password: String): Int {
val policy = StrictMode.ThreadPolicy.Builder().permitAll().build()

@ -1,6 +1,7 @@
package com.example.mathseduc.ui
import android.content.Intent
import android.widget.Toast
import androidx.compose.foundation.Image
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column
@ -23,6 +24,8 @@ import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.unit.dp
import com.example.mathseduc.ConnexionPlayerActivity
import com.example.mathseduc.MainActivity
import com.example.mathseduc.MultiActivity
import com.example.mathseduc.R
import com.example.mathseduc.ui.theme.Colors
@ -96,7 +99,8 @@ fun HomePage() {
Spacer(modifier = Modifier.height(16.dp))
Button(
onClick = { /* Handle connexion button click */ },
onClick = { val intent = Intent(context, ConnexionPlayerActivity::class.java)
context.startActivity(intent) },
shape = RoundedCornerShape(15),
colors = ButtonDefaults.buttonColors(Colors.Grey),
modifier = Modifier

Loading…
Cancel
Save