From 046b6d4dc24d63a3a5be18c4e30f05d2d2938232 Mon Sep 17 00:00:00 2001 From: GOEPP THOMAS <thomas@saturne-digital.fr> Date: Mon, 13 Jan 2025 21:14:21 +0100 Subject: [PATCH] fix: stable version of mobile --- .../PlayingQuiz/EndQuiz/EndQuizListPlayer.tsx | 6 +-- components/PlayingQuiz/EndQuiz/UserScore.tsx | 4 +- components/lists/QuizList.tsx | 2 +- models/Quiz.ts | 5 ++- screens/Home/Home.tsx | 21 ---------- .../EndQuizMulti/EndQuizMultiChild.tsx | 40 +++---------------- services/QuizService.ts | 6 +-- 7 files changed, 19 insertions(+), 65 deletions(-) diff --git a/components/PlayingQuiz/EndQuiz/EndQuizListPlayer.tsx b/components/PlayingQuiz/EndQuiz/EndQuizListPlayer.tsx index a2378cb..819fabe 100644 --- a/components/PlayingQuiz/EndQuiz/EndQuizListPlayer.tsx +++ b/components/PlayingQuiz/EndQuiz/EndQuizListPlayer.tsx @@ -1,14 +1,14 @@ import React from "react"; import { FlatList, View, Text, StyleSheet, Image } from "react-native"; -import UserModel from "../../../models/UserModel"; +import {User} from "../../../models/User"; interface Props { - users: UserModel[]; + users: User[]; maxScore: number; } export default function EndQuizListPlayer({ users, maxScore }: Props) { - const renderUser = ({ item, index }: { item: UserModel; index: number }) => ( + const renderUser = ({ item, index }: { item: User; index: number }) => ( <View style={[styles.userContainer, index === 0 && styles.firstPlace]}> <Image source={require("../../../assets/ProfilBaseImage.png")} // Replace with actual profile picture if available diff --git a/components/PlayingQuiz/EndQuiz/UserScore.tsx b/components/PlayingQuiz/EndQuiz/UserScore.tsx index d57489c..6583622 100644 --- a/components/PlayingQuiz/EndQuiz/UserScore.tsx +++ b/components/PlayingQuiz/EndQuiz/UserScore.tsx @@ -1,8 +1,8 @@ -import UserModel from "../../../models/UserModel"; import { View, Text, StyleSheet, Image } from "react-native"; +import {User} from "../../../models/User"; interface Props { - user: UserModel; + user: User; score: number; maxScore: number; isFirst: boolean; diff --git a/components/lists/QuizList.tsx b/components/lists/QuizList.tsx index 6cb9f80..535915f 100644 --- a/components/lists/QuizList.tsx +++ b/components/lists/QuizList.tsx @@ -61,7 +61,7 @@ export default function QuizList({ quizList, isLoadingData, nextPage, onQuizPres <FlatList data={quizList} renderItem={renderQuizItem} - keyExtractor={(item) => item.id} + keyExtractor={(item,index) => item.id+ ""+ index} showsVerticalScrollIndicator={true} contentContainerStyle={styles.listContent} onEndReached={() => { diff --git a/models/Quiz.ts b/models/Quiz.ts index 1acc2ce..c717243 100644 --- a/models/Quiz.ts +++ b/models/Quiz.ts @@ -1,5 +1,8 @@ import {Question} from "./Question"; - +export interface QuizCommunityResponse { + quizzes: Quiz[]; + total: number; +} export interface Difficulty { id: number; name: string; diff --git a/screens/Home/Home.tsx b/screens/Home/Home.tsx index 1369070..4fb5203 100644 --- a/screens/Home/Home.tsx +++ b/screens/Home/Home.tsx @@ -10,28 +10,7 @@ interface Props { } export default function Home({navigation}: Props) { - const debugQuiz: Quiz = { - id: "debug-quiz-001", - name: "Debug Quiz", - description: "This is a basic quiz for debugging purposes.", - score: 0, - questionIndex: 0, - questionCount: 0, - categoryId: 1, - difficultyId: 1, - authorId: 1, - category: { - id: 1, - name: "General Knowledge", - }, - difficulty: { - id: 1, - name: "Easy", - }, - questions: [], // Tableau de questions vide - }; - navigation.navigate("EndQuizMulti", {quiz: debugQuiz}); return ( <View style={styles.containerGlobal}> <TemplateMenu navigation={navigation} headerNavigation={false} buttonGoBack={false}> diff --git a/screens/PlayingQuiz/EndQuizMulti/EndQuizMultiChild.tsx b/screens/PlayingQuiz/EndQuizMulti/EndQuizMultiChild.tsx index 3ba9918..b53eb9f 100644 --- a/screens/PlayingQuiz/EndQuizMulti/EndQuizMultiChild.tsx +++ b/screens/PlayingQuiz/EndQuizMulti/EndQuizMultiChild.tsx @@ -5,7 +5,6 @@ import {Quiz} from "../../../models/Quiz"; import {useQuizService} from "../../../services/QuizService"; import HttpError from "../../../services/HttpError"; import UserScore from "../../../components/PlayingQuiz/EndQuiz/UserScore"; -import UserModel from "../../../models/UserModel"; import EndQuizListPlayer from "../../../components/PlayingQuiz/EndQuiz/EndQuizListPlayer"; @@ -17,38 +16,11 @@ interface Props { export default function EndQuizMultiChild({ navigation, quiz }: Props) { - const {restartQuiz, remainingQuiz} = useQuizService() - - const handleRestartPress = async () => { - const isRestarted = await restartQuiz(quiz.id); - if(HttpError.isHttpError(isRestarted)){ - console.log(isRestarted.message); - return - } - if(!isRestarted) { - return; - } - const quizRestarted = await remainingQuiz(quiz.id); - if(HttpError.isHttpError(quizRestarted)){ - console.log(quizRestarted.message); - return - } - - navigation.reset({ - index: 0, - routes: [ - { - name: "PlayingQuiz", - params: {quizRecovered: quizRestarted}, - }, - ] - }); - }; + const userTest = {id: 1, email: "user1@email.com", username: "user1", stats: undefined}; const handleBackToMenu = () => { navigation.navigate('TabNavigator'); }; - const user = new UserModel(10,"Thomassss", "Thomas"); return ( <View style={styles.container}> @@ -61,13 +33,13 @@ export default function EndQuizMultiChild({ navigation, quiz }: Props) { style={styles.stars} /> <View style={styles.usersContainer}> - <UserScore user={user} score={10} maxScore={quiz.questionCount} isFirst={false}/> - <UserScore user={user} score={10} maxScore={quiz.questionCount} isFirst={true}/> - <UserScore user={user} score={10} maxScore={quiz.questionCount} isFirst={false}/> + <UserScore user={userTest} score={10} maxScore={quiz.questionCount} isFirst={false}/> + <UserScore user={userTest} score={10} maxScore={quiz.questionCount} isFirst={true}/> + <UserScore user={userTest} score={10} maxScore={quiz.questionCount} isFirst={false}/> </View> - <EndQuizListPlayer users={[new UserModel(1, "user1", "user1@email.com"), new UserModel(2, "user2", "user2@email.com")]} maxScore={quiz.questionCount}/> + <EndQuizListPlayer users={[userTest, userTest]} maxScore={quiz.questionCount}/> - <DefaultButton text="RESTART" handleButtonPressed={handleRestartPress} buttonStyle={styles.whiteButton} buttonText={styles.whiteButtonText}></DefaultButton> + {/*<DefaultButton text="RESTART" handleButtonPressed={handleRestartPress} buttonStyle={styles.whiteButton} buttonText={styles.whiteButtonText}></DefaultButton>*/} <DefaultButton text="BACK TO MENU" handleButtonPressed={handleBackToMenu} buttonStyle={styles.blueButton} buttonText={styles.blueButtonText}></DefaultButton> </View> </View> diff --git a/services/QuizService.ts b/services/QuizService.ts index 19cb0e9..8dbbc26 100644 --- a/services/QuizService.ts +++ b/services/QuizService.ts @@ -1,5 +1,5 @@ import HttpError from "./HttpError"; -import {Quiz} from "../models/Quiz"; +import {Quiz, QuizCommunityResponse} from "../models/Quiz"; import axios from "axios"; import {Answer} from "../models/Answer"; import {Question} from "../models/Question"; @@ -214,11 +214,11 @@ export const useQuizService = () => { const getCommunityQuiz = async (skip: number, take: number) => { try { - const response = await axios.get<Quiz[]>(`${url}/quiz/paginated?skip=${skip}&take=${take}`, { + const response = await axios.get<QuizCommunityResponse>(`${url}/quiz/paginated?skip=${skip}&take=${take}`, { withCredentials: true, // Inclut les cookies pour une session authentifiée }); - return response.data; + return response.data.quizzes; } catch (error: any) { if (error.response) { -- GitLab