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 PurposesContext = createContext()
export default function PurposesProvider({ url, children }) {
const { data, isLoading: loading, mutate } = useFetch(url, { items: [] })
const { items: purposes, link_add, total } = data
const addPurpose = useCallback(
(newPurpose) => {
const newPurposes = [newPurpose, ...purposes]
mutate({ ...data, items: newPurposes })
},
[purposes, mutate]
)
const removePurpose = useCallback(
(purposeId) => {
const newPurposes = purposes.filter((purpose) => purpose.id !== purposeId)
mutate({ ...data, items: newPurposes })
},
[purposes, mutate]
)
const updatePurpose = useCallback(
(updatedPurpose) => {
const newPurposes = purposes.map((purpose) =>
purpose.id === updatedPurpose.id ? updatedPurpose : purpose
)
mutate({ ...data, items: newPurposes })
},
[purposes, mutate]
)
const getPurposeById = useCallback(
(purposeId) => purposes.find((purpose) => purpose.id === purposeId),
[purposes]
)
return (
<PurposesContext.Provider
value={{
loading,
purposes,
addUrl: link_add,
total,
addPurpose,
removePurpose,
updatePurpose,
getPurposeById
}}
>
{children}
</PurposesContext.Provider>
)
}