Proyectos de Subversion LeadersLinked - SPA

Rev

Rev 3373 | Rev 3432 | Ir a la última revisión | | Comparar con el anterior | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
3416 stevensc 1
import React, { createContext, useCallback } from "react";
3140 stevensc 2
 
3416 stevensc 3
import { useFetch } from "@hooks";
3140 stevensc 4
 
3416 stevensc 5
export const ParadigmsContext = createContext();
3140 stevensc 6
 
7
export default function ParadigmsProvider({ url, children }) {
3416 stevensc 8
  const { data, loading: loading, mutate } = useFetch(url, { items: [] });
9
  const { items: paradigms, link_add, total } = data;
3140 stevensc 10
 
11
  const addParadigm = useCallback(
12
    (newParadigm) => {
3416 stevensc 13
      const newParadigms = [newParadigm, ...paradigms];
14
      mutate({ ...data, items: newParadigms });
3140 stevensc 15
    },
16
    [paradigms, mutate]
3416 stevensc 17
  );
3140 stevensc 18
 
3150 stevensc 19
  const removeParadigm = useCallback(
3140 stevensc 20
    (paradigmId) => {
21
      const newParadigms = paradigms.filter(
22
        (paradigm) => paradigm.id !== paradigmId
3416 stevensc 23
      );
24
      mutate({ ...data, items: newParadigms });
3140 stevensc 25
    },
26
    [paradigms, mutate]
3416 stevensc 27
  );
3140 stevensc 28
 
29
  const updateParadigm = useCallback(
30
    (updatedParadigm) => {
31
      const newParadigms = paradigms.map((paradigm) =>
32
        paradigm.id === updatedParadigm.id ? updatedParadigm : paradigm
3416 stevensc 33
      );
34
      mutate({ ...data, items: newParadigms });
3140 stevensc 35
    },
36
    [paradigms, mutate]
3416 stevensc 37
  );
3140 stevensc 38
 
39
  const getParadigmById = useCallback(
40
    (paradigmId) => paradigms.find((paradigm) => paradigm.id === paradigmId),
41
    [paradigms]
3416 stevensc 42
  );
3140 stevensc 43
 
44
  return (
45
    <ParadigmsContext.Provider
46
      value={{
47
        loading,
48
        paradigms,
49
        addUrl: link_add,
50
        total,
51
        addParadigm,
3150 stevensc 52
        removeParadigm,
3140 stevensc 53
        updateParadigm,
3416 stevensc 54
        getParadigmById,
3140 stevensc 55
      }}
56
    >
57
      {children}
58
    </ParadigmsContext.Provider>
3416 stevensc 59
  );
3140 stevensc 60
}