IngredientService (Failed)
continuous-integration/drone/push Build is passing Details

pull/24/head^2
Louison PARANT 1 year ago
parent 653b3cf301
commit 3632835840

@ -5,4 +5,7 @@ export default interface IIngredientService {
getIngredientById(id: number): Promise<Ingredient | null>; getIngredientById(id: number): Promise<Ingredient | null>;
getIngredientByLetter(id: string): Promise<Ingredient[]>; getIngredientByLetter(id: string): Promise<Ingredient[]>;
getfilteredIngredient(prompt: string): Promise<Ingredient[]>; getfilteredIngredient(prompt: string): Promise<Ingredient[]>;
getAvailableIngredient(): Promise<Ingredient[]>,
addIngredient(newIngredient: Ingredient): Promise<boolean>,
delIngredient(idIngredient: number): Promise<boolean>
} }

@ -1,6 +1,8 @@
import AsyncStorage from "@react-native-async-storage/async-storage";
import Ingredient from "../../Models/Ingredient"; import Ingredient from "../../Models/Ingredient";
import IIngredientService from "./IIngredientService"; import IIngredientService from "./IIngredientService";
import axios from 'axios'; import axios from 'axios';
import eventEmitter from "../../screens/EventEmitter";
export default class IngredientService implements IIngredientService { export default class IngredientService implements IIngredientService {
private readonly API_URL = "http://leftovers.alwaysdata.net/ingredients"; private readonly API_URL = "http://leftovers.alwaysdata.net/ingredients";
@ -41,4 +43,36 @@ export default class IngredientService implements IIngredientService {
throw new Error('Erreur lors de la récupération des ingrédients : ' + error.message); throw new Error('Erreur lors de la récupération des ingrédients : ' + error.message);
} }
} }
async getAvailableIngredient(): Promise<Ingredient[]> {
const results = await AsyncStorage.getItem('ingredient')
const availableIngredient = JSON.parse(results)
if(availableIngredient.length == 0){
availableIngredient.push(new Ingredient(-1, "None"))
}
console.log("AvailableIngredient:", availableIngredient)
return availableIngredient;
}
async addIngredient(newIngredient: Ingredient): Promise<boolean> {
let selectedIngredients = await this.getAvailableIngredient()
const exists = selectedIngredients.find((ingredient) => ingredient.id === newIngredient.id);
if (!exists) {
let existingAvailableIngredient = await AsyncStorage.getItem('ingredient');
existingAvailableIngredient = existingAvailableIngredient ? JSON.parse(existingAvailableIngredient) : [];
const updatedAvailableIngredient = [...existingAvailableIngredient, newIngredient];
await AsyncStorage.setItem('ingredient', JSON.stringify(updatedAvailableIngredient));
eventEmitter.emit('ingredientAdded');
return true
}
return false
}
async delIngredient(idIngredient: number): Promise<boolean> {
let selectedIngredients = await this.getAvailableIngredient()
const updatedIngredients = selectedIngredients.filter((ingredient) => ingredient.id !== idIngredient);
await AsyncStorage.setItem('ingredient', JSON.stringify(updatedIngredients));
eventEmitter.emit('ingredientDeleted');
return true
}
} }

@ -9,7 +9,7 @@ import IngredientService from '../Services/Ingredients/IngredientsServices';
import ColorContext from '../theme/ColorContext'; import ColorContext from '../theme/ColorContext';
import ValidateButton from '../components/ValidateButton'; import ValidateButton from '../components/ValidateButton';
import AsyncStorage from '@react-native-async-storage/async-storage'; import AsyncStorage from '@react-native-async-storage/async-storage';
import EventEmitter from './EventEmitter'; import eventEmitter from './EventEmitter';
import plus from '../assets/images/plus.png'; import plus from '../assets/images/plus.png';
import moins from '../assets/images/minus.png'; import moins from '../assets/images/minus.png';
@ -50,8 +50,7 @@ export default function IngredientSelection(props) {
const loadIngredients = async () => { const loadIngredients = async () => {
try { try {
const ingredients = await ingredientService.getAllIngredient(); setResponse(await ingredientService.getAllIngredient());
setResponse(ingredients);
} catch (error) { } catch (error) {
console.log(error); console.log(error);
} finally { } finally {
@ -107,7 +106,7 @@ const fetchAvailableIngredient = async () => {
setSelectedIngredients(existingAvailableIngredient); setSelectedIngredients(existingAvailableIngredient);
} }
else{ else{
setSelectedIngredients([{value: "None"}]) setSelectedIngredients([new Ingredient(-1, "None")])
} }
}; };
@ -119,7 +118,7 @@ const fetchAvailableIngredient = async () => {
existingAvailableIngredient = existingAvailableIngredient ? JSON.parse(existingAvailableIngredient) : []; existingAvailableIngredient = existingAvailableIngredient ? JSON.parse(existingAvailableIngredient) : [];
const updatedAvailableIngredient = [...existingAvailableIngredient, newIngredient]; const updatedAvailableIngredient = [...existingAvailableIngredient, newIngredient];
await AsyncStorage.setItem('ingredient', JSON.stringify(updatedAvailableIngredient)); await AsyncStorage.setItem('ingredient', JSON.stringify(updatedAvailableIngredient));
EventEmitter.emit('ingredientAdded'); eventEmitter.emit('ingredientAdded');
fetchAvailableIngredient(); fetchAvailableIngredient();
console.log('Ingredient Added:', newIngredient); console.log('Ingredient Added:', newIngredient);
ChangeAvailableSize(false) ChangeAvailableSize(false)
@ -134,6 +133,7 @@ const fetchAvailableIngredient = async () => {
try{ try{
const updatedIngredients = selectedIngredients.filter((ingredient) => ingredient.id !== idIngredient); const updatedIngredients = selectedIngredients.filter((ingredient) => ingredient.id !== idIngredient);
await AsyncStorage.setItem('ingredient', JSON.stringify(updatedIngredients)); await AsyncStorage.setItem('ingredient', JSON.stringify(updatedIngredients));
eventEmitter.emit('ingredientDeleted');
fetchAvailableIngredient(); fetchAvailableIngredient();
setSelectedIngredients(updatedIngredients); setSelectedIngredients(updatedIngredients);
ChangeAvailableSize(true) ChangeAvailableSize(true)
@ -166,7 +166,7 @@ const fetchAvailableIngredient = async () => {
setAvailableSize(90) setAvailableSize(90)
} }
else if (selectedIngredients.length == 1){ else if (selectedIngredients.length == 1){
if(selectedIngredients[0].value == "None"){ if(selectedIngredients[0].name == "None"){
setAvailableSize(90) setAvailableSize(90)
} }
else{ else{

Loading…
Cancel
Save