import React, { useEffect, useState, useCallback } from "react"; import { View, ScrollView, StyleSheet, Text, Image, BackHandler, } from "react-native"; import { SafeAreaView } from "react-native-safe-area-context"; import AsyncStorage from "@react-native-async-storage/async-storage"; import { useNavigation, useRoute, useFocusEffect } from "@react-navigation/native"; import { Button, ButtonContainer } from "../components/Button"; import { Banner } from "../components/Banner"; import { colors, texts, examScheme } from "../components/Variables"; import aerodynamicsQuestions from "../data/aerodynamics"; import firstAidQuestions from "../data/firstAid"; import flightSafetyQuestions from "../data/flightSafety"; import instrumentsQuestions from "../data/instruments"; import legislationQuestions from "../data/legislation"; import materialsQuestions from "../data/materials"; import meteorologyQuestions from "../data/meteorology"; import physiopathologyQuestions from "../data/physiopathology"; import pilotingTechniquesQuestions from "../data/pilotingTechniques"; const allQuestions = { aerodynamics: aerodynamicsQuestions, firstAid: firstAidQuestions, flightSafety: flightSafetyQuestions, instruments: instrumentsQuestions, legislation: legislationQuestions, materials: materialsQuestions, meteorology: meteorologyQuestions, physiopathology: physiopathologyQuestions, pilotingTechniques: pilotingTechniquesQuestions, }; const header = require("../assets/header.png"); const styles = StyleSheet.create({ container: { backgroundColor: colors.dark_blue, flex: 1 }, safearea: { flex: 1, marginTop: 0, justifyContent: "space-between", paddingHorizontal: 20, paddingBottom: 40, }, headerContainer: { marginTop: -40, alignItems: "center", justifyContent: "center", width: "100%", height: 200, }, header: { width: "100%" }, box: { marginTop: 30, borderColor: colors.black_alpha, borderWidth: 1, padding: 15, borderRadius: 5, backgroundColor: colors.white_alpha, }, text: { color: colors.white, fontSize: 20, textAlign: "center", fontWeight: "600", paddingTop: 0, }, textCode: { color: colors.white, fontSize: 12, textAlign: "center", fontWeight: "500", paddingTop: 10, paddingBottom: 0, }, textBig: { color: colors.white, fontSize: 22, textAlign: "center", fontWeight: "400", paddingBottom: 15, textTransform: "uppercase", textShadowColor: "rgba(0, 0, 0, 0.75)", textShadowOffset: { width: -1, height: 1 }, textShadowRadius: 10, }, bannerContainer: { flex: 1, alignItems: "center", justifyContent: "center" }, }); const Recap = () => { const navigation = useNavigation(); const route = useRoute(); const [storeWrongAnswers, setStoreWrongAnswers] = useState([]); // Load stored wrong answers useEffect(() => { AsyncStorage.getItem("storeWrongAnswers").then((value) => { if (value) { setStoreWrongAnswers(JSON.parse(value)); } }); }, []); const handleBackButton = useCallback(() => { const tmpQuestions = []; AsyncStorage.getItem("setupData").then((value) => { const setupData = JSON.parse(value) || {}; examScheme.forEach((elem) => { let currentSection = setupData.excludeDelta ? allQuestions[elem.section].filter((item) => !item.delta) : allQuestions[elem.section]; for (let i = 0; i < elem.questions; i++) { const currentIndex = Math.floor(Math.random() * currentSection.length); tmpQuestions.push(currentSection[currentIndex]); currentSection = currentSection.filter((_, idx) => idx !== currentIndex); } }); navigation.navigate("Splash", { examQuestions: tmpQuestions, storeWrongAnswers, }); }); return true; }, [navigation, storeWrongAnswers]); // Attach hardware back handler useFocusEffect( useCallback(() => { const backHandler = BackHandler.addEventListener( "hardwareBackPress", handleBackButton ); return () => backHandler.remove(); }, [handleBackButton]) ); const questions = route.params?.wrongAnswers || []; return ( aaa{texts.recapTitle} {questions.map((question) => ( {question.id} {question.question} {question.answers.map((answer) => (