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

Loading…
Cancel
Save