diff --git a/LeftOvers/App.tsx b/LeftOvers/App.tsx index d59933d..44a747e 100644 --- a/LeftOvers/App.tsx +++ b/LeftOvers/App.tsx @@ -18,8 +18,8 @@ export default function App() { - }> - + }> + diff --git a/LeftOvers/Services/Recipes/RecipesServices.tsx b/LeftOvers/Services/Recipes/RecipesServices.tsx index c86d71d..e5100ba 100644 --- a/LeftOvers/Services/Recipes/RecipesServices.tsx +++ b/LeftOvers/Services/Recipes/RecipesServices.tsx @@ -18,7 +18,7 @@ export default class RecipesService implements IRecipesService { async getRecipeById(id: number): Promise{ try { const response = await axios.get(`${this.API_URL}/${id}`); - console.log(response); + //console.log(response.name); return response.data as Recipes; } catch (error) { throw new Error('Erreur lors de la récupération des ingrédients : ' + error.message); diff --git a/LeftOvers/navigation/CookingStackScreen.tsx b/LeftOvers/navigation/CookingStackScreen.tsx index bf1f075..669a8b2 100644 --- a/LeftOvers/navigation/CookingStackScreen.tsx +++ b/LeftOvers/navigation/CookingStackScreen.tsx @@ -5,6 +5,8 @@ import { createNativeStackNavigator } from '@react-navigation/native-stack'; import IngredientSelection from '../screens/IngredientSelection'; import { HeaderTitle } from './Utils'; import ThemeContext from '../theme/ThemeContext'; +import RecipeSuggestion from '../screens/RecipeSuggestion'; +import RecipeDetails from '../screens/RecipeDetails'; const CookingStack = createNativeStackNavigator() @@ -23,6 +25,26 @@ export default function CookingStackScreen() { ) }} /> + ( + + ) + }} + /> + ( + + ) + }} + /> ) } diff --git a/LeftOvers/screens/HomePage.tsx b/LeftOvers/screens/HomePage.tsx index 080f88f..205b2c7 100644 --- a/LeftOvers/screens/HomePage.tsx +++ b/LeftOvers/screens/HomePage.tsx @@ -1,4 +1,4 @@ -import React, { useContext, useState } from 'react'; +import React, { useContext, useState, useEffect } from 'react'; import { StyleSheet, View, Text, Pressable, Image, ScrollView } from 'react-native'; import {LinearGradient} from 'expo-linear-gradient'; import {SafeAreaProvider} from 'react-native-safe-area-context'; @@ -11,17 +11,51 @@ import ColorContext from '../theme/ColorContext'; import bracketLeft from '../assets/images/angle_bracket_left.png'; import bracketRight from '../assets/images/angle_bracket_right.png'; +import AsyncStorage from '@react-native-async-storage/async-storage'; +import EventEmitter from './EventEmitter'; export default function HomePage({ navigation, props }) { const {colors} = useContext(ColorContext); - const profiles = [ + const profilesHand = [ {name: "Johnny Silverhand", avatar: "plus_small.png", isActive: "flex"}, {name: "Panam Palmer", avatar: "plus_small.png", isActive: "none"}, {name: "Goro Takemura", avatar: "plus_small.png", isActive: "none"}, {name: "David Martinez", avatar: "plus_small.png", isActive: "flex"}, ] + const [profiles, setProfiles] = useState([{name: "None", avatar: "plus_small.png", isActive: "none"}]); + console.log(profiles, profiles.length) + + const handleGetProfiles = async () => { + try { + const existingProfiles = await AsyncStorage.getItem('profiles'); + return JSON.parse(existingProfiles) || []; + } catch (error) { + console.log(error); + return []; + } + } + + const fetchProfiles = async () => { + const existingProfiles = await handleGetProfiles(); + setProfiles(existingProfiles); + }; + + const subscription = EventEmitter.addListener('profileAdded', async () => { + fetchProfiles(); + }); + + useEffect(() => { + fetchProfiles(); + console.log(profiles.length) + if(profiles.length == 0){ + setProfiles([{name: "None", avatar: "plus_small.png", isActive: "none"}]) + console.log("Je passe ici") + } + console.log(profiles) + }, []); + const ingredientList = [{title: "Carrot"}, {title: "Potato"}, {title: "Peach"}] const [cpt, setCpt] = useState(0); @@ -155,8 +189,6 @@ export default function HomePage({ navigation, props }) { - navigation.navigate('FiltersSelection')}/> - navigation.navigate('Profiles')}/> @@ -178,9 +210,9 @@ export default function HomePage({ navigation, props }) { - navigation.navigate('IngredientSelection')}/> + console.log('Chnge Selected Ingredient')}/> - navigation.navigate('RecipeSuggestion')}/> + console.log('Go and search for recipe')}/> diff --git a/LeftOvers/screens/IngredientSelection.tsx b/LeftOvers/screens/IngredientSelection.tsx index 9a0a1fe..ee7b49a 100644 --- a/LeftOvers/screens/IngredientSelection.tsx +++ b/LeftOvers/screens/IngredientSelection.tsx @@ -56,6 +56,7 @@ const loadIngredients = async () => { }; useEffect(() => { + console.log("Je passe ici (Ingredient Selection)") loadIngredients(); }, []); diff --git a/LeftOvers/screens/Profiles.tsx b/LeftOvers/screens/Profiles.tsx index 77b22a5..eed71c6 100644 --- a/LeftOvers/screens/Profiles.tsx +++ b/LeftOvers/screens/Profiles.tsx @@ -61,7 +61,7 @@ export default function Profiles({navigation, props}) { const existingProfiles = await AsyncStorage.getItem('profiles'); return JSON.parse(existingProfiles) || []; } catch (error) { - console.log("ça maaaaaaaaarche poaaaaaaaaaaaas"); + console.log(error); return []; } } diff --git a/LeftOvers/screens/RecipeDetails.tsx b/LeftOvers/screens/RecipeDetails.tsx index 74905c8..81913bd 100644 --- a/LeftOvers/screens/RecipeDetails.tsx +++ b/LeftOvers/screens/RecipeDetails.tsx @@ -12,26 +12,32 @@ import ColorContext from '../theme/ColorContext'; export default function RecipeDetails(props) { const {colors} = useContext(ColorContext); - - const [isLoading, setIsLoading] = useState(true); - const [response, setResponse] = useState(undefined); + + const [isLoading, setIsLoading] = useState(true) + const [response, setResponse] = useState(); const recipesService = new RecipesService(); const loadRecipe = async () => { try { - const recipe = await recipesService.getRecipeById(props.id); + const recipe = await recipesService.getRecipeById(120); + console.log("Recipe.name: "+recipe.name) setResponse(recipe); + console.log("Response.name: "+response.name) } catch (error) { console.log(error); - } finally { - setIsLoading(false); + } finally{ + setIsLoading(false) } }; useEffect(() => { + console.log("Je passe ici (useEffect)") loadRecipe(); }, []); + loadRecipe() + console.log("Response.name: " + response.name) + function convertToHoursMinutes(totalMinutes: number): string { const hours = Math.floor(totalMinutes / 60); const minutes = totalMinutes % 60; @@ -58,7 +64,7 @@ export default function RecipeDetails(props) { alignItems: 'center', justifyContent: 'center', borderRadius: 20, - backgroundColor: '#F2F0E4', + backgroundColor: colors.cardBackground, padding: "3%", marginHorizontal: "3%", borderWidth: 1, @@ -75,12 +81,12 @@ export default function RecipeDetails(props) { }, filters: { fontSize: 20, - color: '#ACA279', + color: colors.cardElementBorder, flex: 1, }, nbSelected: { fontSize: 11, - color: "#3F3C42", + color: colors.cardDetail, textAlign: "right", }, }); @@ -88,7 +94,7 @@ export default function RecipeDetails(props) { return ( - + - -