Rev 3416 | Ir a la última revisión | 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 } = dataconst 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>)}