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 ParadigmsContext = createContext();
export default function ParadigmsProvider({ url, children }) {
const { data, loading: 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>
);
}