connection des quotes

pull/45/head
kevin.modejar 1 month ago
parent 4d6b420ea3
commit 90384e860d

@ -5,6 +5,7 @@ import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent import androidx.activity.compose.setContent
import androidx.activity.enableEdgeToEdge import androidx.activity.enableEdgeToEdge
import com.example.what_the_fantasy.ui.navigations.AppNavigator import com.example.what_the_fantasy.ui.navigations.AppNavigator
import com.example.what_the_fantasy.ui.screens.QuotePage
import com.example.what_the_fantasy.ui.theme.What_The_FantasyTheme import com.example.what_the_fantasy.ui.theme.What_The_FantasyTheme
class MainActivity : ComponentActivity() { class MainActivity : ComponentActivity() {

@ -1,6 +1,6 @@
package com.example.what_the_fantasy.data.services package com.example.what_the_fantasy.data.services
import com.example.what_the_fantasy.data.local.UserStub.users import com.example.what_the_fantasy.data.model.Quote
import com.example.what_the_fantasy.data.model.User import com.example.what_the_fantasy.data.model.User
interface IServices { interface IServices {
@ -17,6 +17,8 @@ interface IServices {
fun SearchQuote(quote : String) fun SearchQuote(quote : String)
fun getQuote( id : Int): Quote?
fun isFavorite(id : Int): Boolean
} }

@ -1,6 +1,8 @@
package com.example.what_the_fantasy.data.services package com.example.what_the_fantasy.data.services
import com.example.what_the_fantasy.data.model.Quote
import com.example.what_the_fantasy.data.model.User import com.example.what_the_fantasy.data.model.User
import com.example.what_the_fantasy.ui.navigations.Destination
class ServicesAPI : IServices { class ServicesAPI : IServices {
override fun EditUsername(username: String, index : Int) { override fun EditUsername(username: String, index : Int) {
@ -27,6 +29,14 @@ class ServicesAPI : IServices {
TODO("Not yet implemented") TODO("Not yet implemented")
} }
override fun getQuote(id: Int): Quote? {
TODO("Not yet implemented")
}
override fun isFavorite(id: Int): Boolean {
TODO("Not yet implemented")
}
override fun getFavorite(username: String) { override fun getFavorite(username: String) {
TODO("Not yet implemented") TODO("Not yet implemented")
} }

@ -2,10 +2,11 @@ package com.example.what_the_fantasy.data.services
import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.util.Log import android.util.Log
import com.example.what_the_fantasy.data.local.UserStub
import com.example.what_the_fantasy.data.local.UserStub.users import com.example.what_the_fantasy.data.local.UserStub.users
import com.example.what_the_fantasy.data.model.User import com.example.what_the_fantasy.data.model.User
import com.example.what_the_fantasy.Logs.LogsUsers import com.example.what_the_fantasy.Logs.LogsUsers
import com.example.what_the_fantasy.data.local.QuoteStub
import com.example.what_the_fantasy.data.model.Quote
import com.example.what_the_fantasy.data.model.SrcLanguage import com.example.what_the_fantasy.data.model.SrcLanguage
import com.example.what_the_fantasy.ui.components.hashPassword import com.example.what_the_fantasy.ui.components.hashPassword
import java.time.LocalDate import java.time.LocalDate
@ -71,6 +72,14 @@ class ServicesStub : IServices {
TODO("Not yet implemented") TODO("Not yet implemented")
} }
override fun getQuote(id: Int): Quote? {
return (QuoteStub.allQuotes.find { it.id == id })
}
override fun isFavorite(id: Int): Boolean {
TODO("Not yet implemented")
}
override fun getFavorite(username: String) { override fun getFavorite(username: String) {
TODO("Not yet implemented") TODO("Not yet implemented")
} }

@ -34,7 +34,7 @@ data class Quiz(val userIndex : Int, val idQuiz : Int)
@Serializable @Serializable
data class QuizEnd(val userIndex : Int, val idQuiz : Int,val pts : Int) data class QuizEnd(val userIndex : Int, val idQuiz : Int,val pts : Int)
@Serializable @Serializable
data object Quote data class Quote(val quoteId: Int, val userIndex : Int)
@Serializable @Serializable
data object Search data object Search
@Serializable @Serializable
@ -51,7 +51,9 @@ sealed class Destination(val route: String) {
fun createRoute(userIndex: Int) = "Profil/$userIndex" // Fonction pour créer la route avec l'index fun createRoute(userIndex: Int) = "Profil/$userIndex" // Fonction pour créer la route avec l'index
} }
data object Quiz : Destination("Quiz") data object Quiz : Destination("Quiz")
data object Quote : Destination("Quote") data object Quote : Destination("Quote/{quoteId}"){
fun createRoute(quoteId : Int) = "Profil/$quoteId"
}
data object Search : Destination("Search") data object Search : Destination("Search")
data object SignUp : Destination("SignUp") data object SignUp : Destination("SignUp")
data object SubmitQuote : Destination("SubmitQuote") data object SubmitQuote : Destination("SubmitQuote")
@ -89,7 +91,7 @@ fun AppNavigator() {
navAccueil ={ navController.navigate( Accueil(favorite.userIndex) ) }, navAccueil ={ navController.navigate( Accueil(favorite.userIndex) ) },
navQuiz = { navController.navigate(QuizMenu(favorite.userIndex)) }, navQuiz = { navController.navigate(QuizMenu(favorite.userIndex)) },
navProfil = { navController.navigate(Profil(favorite.userIndex)) }, navProfil = { navController.navigate(Profil(favorite.userIndex)) },
navQuote = {navController.navigate(Quote)} navQuote = { quoteId -> navController.navigate(Quote(quoteId,favorite.userIndex))}
) } ) }
composable<Profil>{ composable<Profil>{
val profil:Profil = it.toRoute() val profil:Profil = it.toRoute()
@ -107,11 +109,18 @@ fun AppNavigator() {
services = services services = services
) )
} }
composable<Quote> { composable(Destination.Quote.route) { backStackEntry -> composable<Quote>{
// Récupère l'index passé dans la route val quote:Quote = it.toRoute()
val index = backStackEntry.arguments?.getString("userIndex")?.toInt() ?: -1 QuotePage(
QuotePage(quoteId = index)//, navController = navController) quoteId = quote.quoteId,
} } index = quote.userIndex,
navAccueil ={ navController.navigate( Accueil(quote.userIndex) ) },
navQuiz = { navController.navigate(QuizMenu(quote.userIndex)) },
navProfil = { navController.navigate(Profil(quote.userIndex)) },
navFavorite = { navController.navigate(Favorite(quote.userIndex)) },
service = services
)
}
composable<Search> { SearchPage() } composable<Search> { SearchPage() }
composable<SignUp> { SignUpPage( composable<SignUp> { SignUpPage(
navControllerLogin = { navControllerLogin = {

@ -28,7 +28,7 @@ fun FavoritePage(
navAccueil: (Int) -> Unit, navAccueil: (Int) -> Unit,
navQuiz: (Int) -> Unit, navQuiz: (Int) -> Unit,
navProfil: (Int) -> Unit, navProfil: (Int) -> Unit,
navQuote:() -> Unit navQuote: (Int) -> Unit
) { ) {
NavBar( NavBar(
onFavorite = true, onFavorite = true,
@ -57,7 +57,7 @@ fun FavoritePage(
horizontalAlignment = Alignment.CenterHorizontally horizontalAlignment = Alignment.CenterHorizontally
) { ) {
items(QuoteStub.allQuotes) { quote -> items(QuoteStub.allQuotes) { quote ->
Column (Modifier.clickable { navQuote()}){ Column (Modifier.clickable { navQuote(quote.id)}){
LittleQuoteComponent(quote) LittleQuoteComponent(quote)
Spacer(modifier = Modifier.height(16.dp)) Spacer(modifier = Modifier.height(16.dp))

@ -2,7 +2,6 @@ package com.example.what_the_fantasy.ui.screens
import android.content.Context import android.content.Context
import android.content.Intent import android.content.Intent
import android.net.Uri
import androidx.compose.foundation.background import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Column
@ -32,11 +31,10 @@ import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp import androidx.compose.ui.unit.sp
import androidx.navigation.NavController
import com.example.what_the_fantasy.R import com.example.what_the_fantasy.R
import com.example.what_the_fantasy.data.model.Quote
import coil.compose.AsyncImage import coil.compose.AsyncImage
import com.example.what_the_fantasy.data.local.QuoteStub import com.example.what_the_fantasy.data.services.IServices
import com.example.what_the_fantasy.ui.components.NavBar
import com.example.what_the_fantasy.ui.theme.colorBackground import com.example.what_the_fantasy.ui.theme.colorBackground
import com.example.what_the_fantasy.ui.theme.gradienBox import com.example.what_the_fantasy.ui.theme.gradienBox
import com.example.what_the_fantasy.ui.theme.iconText import com.example.what_the_fantasy.ui.theme.iconText
@ -44,9 +42,24 @@ import com.example.what_the_fantasy.ui.theme.likeIcon
import com.example.what_the_fantasy.ui.theme.whiteBackcgroundText import com.example.what_the_fantasy.ui.theme.whiteBackcgroundText
@Composable @Composable
fun QuotePage(quoteId : Int) { fun QuotePage(
var quote : Quote= QuoteStub.quote1 // service -> GetQuote(id) quoteId : Int,
service : IServices,
index : Int,
navAccueil: (Int) -> Unit,
navFavorite:(Int) -> Unit,
navQuiz: (Int) -> Unit,
navProfil:(Int) -> Unit)
{
var quote = service.getQuote(quoteId) ?: return
val context = LocalContext.current val context = LocalContext.current
NavBar(onProfile = true,
index = index,
navControllerFavorite = navFavorite,
navControllerAccueil = navAccueil,
navControllerProfil = navProfil,
navControllerQuiz = navQuiz
) {
Box( Box(
modifier = Modifier modifier = Modifier
.fillMaxSize() .fillMaxSize()
@ -70,7 +83,8 @@ fun QuotePage(quoteId : Int) {
FunctionalIcon( FunctionalIcon(
// --/!\-- a modifier --/!\-- // --/!\-- a modifier --/!\--
// service -> isFavorite(id) // isFavorite = service.isFavorite(id)
// --------------------------
true, true,
id = quoteId, id = quoteId,
context = context context = context
@ -80,7 +94,10 @@ fun QuotePage(quoteId : Int) {
) )
} }
} }
Column(modifier = Modifier.padding(15.dp)) { Column(modifier = Modifier
.padding(15.dp)
.fillMaxWidth()
) {
InfoQuoteText( InfoQuoteText(
nameId = R.string.source, nameId = R.string.source,
text = quote.source text = quote.source
@ -101,8 +118,11 @@ fun QuotePage(quoteId : Int) {
} }
} }
} }
}
} }
// ------------------ Composants non partager de la page --------------------------------------
@Composable @Composable
fun QuoteText(text: String ){ fun QuoteText(text: String ){
Text( Text(

Loading…
Cancel
Save