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 HabitProgressContext = createContext()
export default function HabitProgressProvider({ url, name, children }) {
const { data, isLoading, mutate } = useFetch(url, {
link_add: '',
items: [],
total: 0
})
const { link_add, items, total } = data
const addItem = useCallback(
(newItem) => {
const newItems = [newItem, ...items]
mutate({ ...data, items: newItems })
},
[items, mutate]
)
const removeItem = useCallback(
(itemId) => {
const newItems = items.filter((item) => item.id !== itemId)
mutate({ ...data, items: newItems })
},
[items, mutate]
)
const editItem = useCallback(
(updatedItem) => {
const newItems = items.map((item) =>
item.id === updatedItem.id ? { ...item, ...updatedItem } : item
)
mutate({ ...data, items: newItems })
},
[items, mutate]
)
const getItemById = useCallback(
(itemId) => items.find((item) => item.id === itemId),
[items]
)
return (
<HabitProgressContext.Provider
value={{
loading: isLoading,
addUrl: link_add,
registers: items,
addItem,
editItem,
removeItem,
getItemById,
habitName: name,
total
}}
>
{children}
</HabitProgressContext.Provider>
)
}