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 ParadigmsContext = createContext()
export default function ParadigmsProvider({ url, children }) {
const { data, isLoading: loading, mutate } = useFetch(url, { items: [] })
const { items: paradigms, link_add, total } = data
const addParadigm = useCallback(
(newParadigm) => {
const newParadigms = [newParadigm, ...paradigms]
mutate({ ...data, items: newParadigms })
},
[paradigms, mutate]
)
const removeParadigm = useCallback(
(paradigmId) => {
const newParadigms = paradigms.filter(
(paradigm) => paradigm.id !== paradigmId
)
mutate({ ...data, items: newParadigms })
},
[paradigms, mutate]
)
const updateParadigm = useCallback(
(updatedParadigm) => {
const newParadigms = paradigms.map((paradigm) =>
paradigm.id === updatedParadigm.id ? updatedParadigm : paradigm
)
mutate({ ...data, items: newParadigms })
},
[paradigms, mutate]
)
const getParadigmById = useCallback(
(paradigmId) => paradigms.find((paradigm) => paradigm.id === paradigmId),
[paradigms]
)
return (
<ParadigmsContext.Provider
value={{
loading,
paradigms,
addUrl: link_add,
total,
addParadigm,
removeParadigm,
updateParadigm,
getParadigmById
}}
>
{children}
</ParadigmsContext.Provider>
)
}