Proyectos de Subversion LeadersLinked - SPA

Rev

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

Rev 3373 Rev 3416
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, isLoading: loading, mutate } = useFetch(url, { items: [] })
7
  const { data, loading: 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
  );
16
  )
17
 
-
 
18
  const removePurpose = useCallback(
17
 
19
    (purposeId) => {
18
  const removePurpose = useCallback(
20
      const newPurposes = purposes.filter(
19
    (purposeId) => {
21
        (purpose) => purpose.id !== purposeId
20
      const newPurposes = purposes.filter((purpose) => purpose.id !== purposeId)
22
      );
Línea 21... Línea 23...
21
      mutate({ ...data, items: newPurposes })
23
      mutate({ ...data, items: newPurposes });
22
    },
24
    },
23
    [purposes, mutate]
25
    [purposes, mutate]
24
  )
26
  );
25
 
27
 
26
  const updatePurpose = useCallback(
28
  const updatePurpose = useCallback(
27
    (updatedPurpose) => {
29
    (updatedPurpose) => {
28
      const newPurposes = purposes.map((purpose) =>
30
      const newPurposes = purposes.map((purpose) =>
29
        purpose.id === updatedPurpose.id ? updatedPurpose : purpose
31
        purpose.id === updatedPurpose.id ? updatedPurpose : purpose
Línea 30... Línea 32...
30
      )
32
      );
31
      mutate({ ...data, items: newPurposes })
33
      mutate({ ...data, items: newPurposes });
32
    },
34
    },
33
    [purposes, mutate]
35
    [purposes, mutate]
Línea 34... Línea 36...
34
  )
36
  );
35
 
37
 
36
  const getPurposeById = useCallback(
38
  const getPurposeById = useCallback(
37
    (purposeId) => purposes.find((purpose) => purpose.id === purposeId),
39
    (purposeId) => purposes.find((purpose) => purpose.id === purposeId),
Línea 46... Línea 48...
46
        addUrl: link_add,
48
        addUrl: link_add,
47
        total,
49
        total,
48
        addPurpose,
50
        addPurpose,
49
        removePurpose,
51
        removePurpose,
50
        updatePurpose,
52
        updatePurpose,
51
        getPurposeById
53
        getPurposeById,
52
      }}
54
      }}
53
    >
55
    >
54
      {children}
56
      {children}
55
    </PurposesContext.Provider>
57
    </PurposesContext.Provider>
56
  )
58
  );
57
}
59
}