test créate user

ConnectAPI
Kentin BRONGNIART 2 weeks ago
parent 5e99fa71f2
commit 6e24977f38

@ -3,6 +3,7 @@ package com.example.what_the_fantasy.data.model
import com.google.gson.annotations.SerializedName
class User(
@SerializedName("id")
val id:Int,
@SerializedName("pseudo")
var username:String,
@ -13,6 +14,7 @@ class User(
@SerializedName("imageProfil")
val imgUrl: String,
@SerializedName("password")
var password: String,
@SerializedName("lang")

@ -50,7 +50,10 @@ interface ApiService {
@Body user: User // Envoie un objet `User` avec les nouvelles données
): Response<Unit>
@POST("users")
suspend fun addUser(
@Body newUser: User
): Response<Unit>
@GET("quote/dailyquote")

@ -29,7 +29,7 @@ interface IServices {
fun AddFav(userId: Int, QuoteId : Int)
fun SupFav(userId: Int, QuoteId : Int)
fun AddComment(content : String)
fun CreateUser(username : String, email : String, passwd : String) : Boolean
suspend fun CreateUser(username : String, email : String, passwd : String) : Boolean
fun getFavorite(user: User): List<Quote>
fun getAllUsers(): List<User>
fun getComment(quoteId : Int) : List<Comment>

@ -12,6 +12,7 @@ import com.example.what_the_fantasy.data.model.User
import com.example.what_the_fantasy.data.retrofit.RetrofitInstance
import com.example.what_the_fantasy.ui.viewModels.CurrentUserViewModel
import java.time.LocalDate
import java.util.Calendar
import java.util.Date
//import com.example.what_the_fantasy.data.model.Comment
@ -234,8 +235,13 @@ class ServicesAPI : IServices {
TODO("Not yet implemented")
}
override fun CreateUser(username: String, email: String, passwd: String): Boolean {
TODO("Not yet implemented")
override suspend fun CreateUser(username: String, email: String, passwd: String): Boolean {
val today = Calendar.getInstance().time
val rep =RetrofitInstance.api.addUser( User(15,username,email,today.toString(),"img",passwd,SrcLanguage.vo))
Log.d("test",rep.toString())
if(rep.code() in 200..299) return true
return false
}
override fun getFavorite(user: User): List<Quote> {
@ -272,7 +278,6 @@ class ServicesAPI : IServices {
override suspend fun getSomeQuotes(nb: Int, page: Int): MutableList<Quote> {
val result = RetrofitInstance.api.getAllQuote(page,nb)
Log.d("test", result.toString())
return result.items
}

@ -104,7 +104,7 @@ class ServicesStub : IServices {
}
override fun CreateUser(username: String, email: String, passwd: String) : Boolean {
override suspend fun CreateUser(username: String, email: String, passwd: String) : Boolean {
val date =dateDuJour()
val passwordhash = hashPassword(passwd)
val services = ServicesStub()

@ -71,7 +71,6 @@ fun AccueilPage(
isLoading.value = true
delay(500)
val newQuotes = services.getSomeQuotes(15, page.intValue)
Log.d("Accueil",newQuotes.toString())
val uniqueQuotes = newQuotes.filterNot { new -> quotes.any { it.id == new.id } }
if (uniqueQuotes.isNotEmpty()) {

@ -26,6 +26,7 @@ import androidx.compose.runtime.collectAsState
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
@ -47,6 +48,7 @@ import com.example.what_the_fantasy.ui.components.ErrorMessageProfileComponent
import com.example.what_the_fantasy.ui.components.VisibleIconPasswordComponent
import com.example.what_the_fantasy.ui.states.SignInUserState
import com.example.what_the_fantasy.ui.viewModels.SignInUserViewModel
import kotlinx.coroutines.launch
@Composable
fun SignUpPage(navControllerLogin: () -> Unit, signInUserVM :SignInUserViewModel,signInState : SignInUserState) {
@ -91,7 +93,7 @@ fun SignUpPage(navControllerLogin: () -> Unit, signInUserVM :SignInUserViewModel
ConnexionButtonSign(R.string.ButtonSignUp,18, Color.White, Color.Black, signInState.username, signInState.email, signInState.password, signInState.confirmPassword, signInUserVM, navControllerLogin)
SpaceHeightComponent(16)
ReturnLogin(R.string.ButtonLogin,12, Color.White, navController = navControllerLogin)
ReturnLogin(R.string.ButtonLogin,12, MaterialTheme.colorScheme.onBackground, navController = navControllerLogin)
}
}
@ -219,17 +221,21 @@ fun ConnexionButtonSign(
val invalidRegex = """^[a-zA-Z0-9]*$""".toRegex()
val coroutineScope = rememberCoroutineScope()
Button(
onClick = {
emailError = !isValidEmail(email)
passwordError = !arePasswordsMatching(password, confirmPassword)
usernameError = username.isBlank() && !username.matches(invalidRegex)
passwordErrorEmpty = password.isBlank() || confirmPassword.isBlank()
if (!emailError && !passwordError && !usernameError && !passwordErrorEmpty) {
usernameErrorExist = !viewModel.createUser(username, email, password)
if(!usernameErrorExist){
navController() // retour à la page login
coroutineScope.launch {
emailError = !isValidEmail(email)
passwordError = !arePasswordsMatching(password, confirmPassword)
usernameError = username.isBlank() && !username.matches(invalidRegex)
passwordErrorEmpty = password.isBlank() || confirmPassword.isBlank()
if (!emailError && !passwordError && !usernameError && !passwordErrorEmpty) {
usernameErrorExist = !viewModel.createUser(username, email, password)
if (!usernameErrorExist) {
navController() // retour à la page login
}
}
}
},

@ -1,20 +1,23 @@
package com.example.what_the_fantasy.ui.viewModels
import androidx.lifecycle.ViewModel
import com.example.what_the_fantasy.data.services.ServicesAPI
import com.example.what_the_fantasy.data.services.ServicesStub
import com.example.what_the_fantasy.ui.states.SignInUserState
import kotlinx.coroutines.awaitAll
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.asStateFlow
import kotlinx.coroutines.flow.update
class SignInUserViewModel: ViewModel() {
private val services = ServicesStub() // faire repository qui gère les services Stub et API
private val services = ServicesAPI() // faire repository qui gère les services Stub et API
private val _userState = MutableStateFlow(SignInUserState())
val userState : StateFlow<SignInUserState> = _userState.asStateFlow()
fun createUser(username: String, email: String, passwd: String) : Boolean{
return services.CreateUser(username, email, passwd)
suspend fun createUser(username: String, email: String, passwd: String) : Boolean{
return services.CreateUser(username, email, passwd)
}
fun setUsername(username : String){

Loading…
Cancel
Save