Rev 3373 | Rev 3432 | 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, loading: 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>);}