Proyectos de Subversion LeadersLinked - SPA

Rev

Rev 3432 | Mostrar el archivo completo | | | Autoría | Ultima modificación | Ver Log |

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