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