Proyectos de Subversion LeadersLinked - SPA

Rev

Rev 3416 | Ir a la última revisión | Mostrar el archivo completo | | | Autoría | Ultima modificación | Ver Log |

Rev 3416 Rev 3432
Línea 1... Línea 1...
1
import React, { createContext, useCallback } from "react";
1
import React, { createContext, useCallback } from 'react'
2
import { useFetch } from "@hooks";
2
import { useFetch } from '@hooks'
Línea 3... Línea 3...
3
 
3
 
Línea 4... Línea 4...
4
export const PurposesContext = createContext();
4
export const PurposesContext = createContext()
5
 
5
 
6
export default function PurposesProvider({ url, children }) {
6
export default function PurposesProvider({ url, children }) {
Línea 7... Línea 7...
7
  const { data, loading: loading, mutate } = useFetch(url, { items: [] });
7
  const { data, isLoading: loading, mutate } = useFetch(url, { items: [] })
8
  const { items: purposes, link_add, total } = data;
8
  const { items: purposes, link_add, total } = data
9
 
9
 
10
  const addPurpose = useCallback(
10
  const addPurpose = useCallback(
11
    (newPurpose) => {
11
    (newPurpose) => {
12
      const newPurposes = [newPurpose, ...purposes];
12
      const newPurposes = [newPurpose, ...purposes]
13
      mutate({ ...data, items: newPurposes });
13
      mutate({ ...data, items: newPurposes })
Línea 14... Línea 14...
14
    },
14
    },
15
    [purposes, mutate]
15
    [purposes, mutate]
16
  );
-
 
17
 
16
  )
18
  const removePurpose = useCallback(
-
 
19
    (purposeId) => {
17
 
20
      const newPurposes = purposes.filter(
18
  const removePurpose = useCallback(
21
        (purpose) => purpose.id !== purposeId
19
    (purposeId) => {
22
      );
20
      const newPurposes = purposes.filter((purpose) => purpose.id !== purposeId)
Línea 23... Línea 21...
23
      mutate({ ...data, items: newPurposes });
21
      mutate({ ...data, items: newPurposes })
24
    },
22
    },
25
    [purposes, mutate]
23
    [purposes, mutate]
26
  );
24
  )
27
 
25
 
28
  const updatePurpose = useCallback(
26
  const updatePurpose = useCallback(
29
    (updatedPurpose) => {
27
    (updatedPurpose) => {
30
      const newPurposes = purposes.map((purpose) =>
28
      const newPurposes = purposes.map((purpose) =>
31
        purpose.id === updatedPurpose.id ? updatedPurpose : purpose
29
        purpose.id === updatedPurpose.id ? updatedPurpose : purpose
Línea 32... Línea 30...
32
      );
30
      )
33
      mutate({ ...data, items: newPurposes });
31
      mutate({ ...data, items: newPurposes })
34
    },
32
    },
35
    [purposes, mutate]
33
    [purposes, mutate]
Línea 36... Línea 34...
36
  );
34
  )
37
 
35
 
38
  const getPurposeById = useCallback(
36
  const getPurposeById = useCallback(
39
    (purposeId) => purposes.find((purpose) => purpose.id === purposeId),
37
    (purposeId) => purposes.find((purpose) => purpose.id === purposeId),
Línea 48... Línea 46...
48
        addUrl: link_add,
46
        addUrl: link_add,
49
        total,
47
        total,
50
        addPurpose,
48
        addPurpose,
51
        removePurpose,
49
        removePurpose,
52
        updatePurpose,
50
        updatePurpose,
53
        getPurposeById,
51
        getPurposeById
54
      }}
52
      }}
55
    >
53
    >
56
      {children}
54
      {children}
57
    </PurposesContext.Provider>
55
    </PurposesContext.Provider>
58
  );
56
  )
59
}
57
}