Rev 3432 | AutorÃa | Comparar con el anterior | Ultima modificación | Ver Log |
import React, { createContext, useCallback } from 'react';import { useFetch } from '@hooks';export const HabitsContext = createContext();export default function HabitsProvider({ url, children }) {const { data, isLoading: loading, mutate } = useFetch(url, { items: [] });const { items: habits, link_add, total } = data;const addHabit = useCallback((newHabit) => {const newHabits = [newHabit, ...habits];mutate({ ...data, items: newHabits });},[habits, mutate]);const removeHabit = useCallback((habitId) => {const newHabits = habits.filter((habit) => habit.id !== habitId);mutate({ ...data, items: newHabits });},[habits, mutate]);const updateHabit = useCallback((updatedHabit) => {const newHabits = habits.map((habit) =>habit.id === updatedHabit.id ? updatedHabit : habit);mutate({ ...data, items: newHabits });},[habits, mutate]);const getHabitById = useCallback((habitId) => habits.find((habit) => habit.id === habitId),[habits]);return (<HabitsContext.Providervalue={{loading,habits,addUrl: link_add,total,addHabit,removeHabit,updateHabit,getHabitById}}>{children}</HabitsContext.Provider>);}