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'
Línea 2... Línea 2...
2
 
2
 
Línea 3... Línea 3...
3
import { useFetch } from "@hooks";
3
import { useFetch } from '@hooks'
Línea 4... Línea 4...
4
 
4
 
5
export const HabitProgressContext = createContext();
5
export const HabitProgressContext = createContext()
6
 
6
 
7
export default function HabitProgressProvider({ url, name, children }) {
7
export default function HabitProgressProvider({ url, name, children }) {
8
  const { data, loading, mutate } = useFetch(url, {
8
  const { data, isLoading, mutate } = useFetch(url, {
9
    link_add: "",
9
    link_add: '',
Línea 10... Línea 10...
10
    items: [],
10
    items: [],
Línea 11... Línea 11...
11
    total: 0,
11
    total: 0
12
  });
12
  })
13
 
13
 
14
  const { link_add, items, total } = data;
14
  const { link_add, items, total } = data
15
 
15
 
16
  const addItem = useCallback(
16
  const addItem = useCallback(
17
    (newItem) => {
17
    (newItem) => {
Línea 18... Línea 18...
18
      const newItems = [newItem, ...items];
18
      const newItems = [newItem, ...items]
19
      mutate({ ...data, items: newItems });
19
      mutate({ ...data, items: newItems })
20
    },
20
    },
21
    [items, mutate]
21
    [items, mutate]
22
  );
22
  )
23
 
23
 
24
  const removeItem = useCallback(
24
  const removeItem = useCallback(
Línea 25... Línea 25...
25
    (itemId) => {
25
    (itemId) => {
26
      const newItems = items.filter((item) => item.id !== itemId);
26
      const newItems = items.filter((item) => item.id !== itemId)
27
      mutate({ ...data, items: newItems });
27
      mutate({ ...data, items: newItems })
28
    },
28
    },
29
    [items, mutate]
29
    [items, mutate]
30
  );
30
  )
31
 
31
 
32
  const editItem = useCallback(
32
  const editItem = useCallback(
33
    (updatedItem) => {
33
    (updatedItem) => {
Línea 34... Línea 34...
34
      const newItems = items.map((item) =>
34
      const newItems = items.map((item) =>
35
        item.id === updatedItem.id ? { ...item, ...updatedItem } : item
35
        item.id === updatedItem.id ? { ...item, ...updatedItem } : item
36
      );
36
      )
37
      mutate({ ...data, items: newItems });
37
      mutate({ ...data, items: newItems })
Línea 38... Línea 38...
38
    },
38
    },
39
    [items, mutate]
39
    [items, mutate]
40
  );
40
  )
41
 
41
 
42
  const getItemById = useCallback(
42
  const getItemById = useCallback(
43
    (itemId) => items.find((item) => item.id === itemId),
43
    (itemId) => items.find((item) => item.id === itemId),
44
    [items]
44
    [items]
45
  );
45
  )
46
 
46
 
47
  return (
47
  return (
48
    <HabitProgressContext.Provider
48
    <HabitProgressContext.Provider
49
      value={{
49
      value={{
50
        loading: loading,
50
        loading: isLoading,
51
        addUrl: link_add,
51
        addUrl: link_add,
52
        registers: items,
52
        registers: items,
53
        addItem,
53
        addItem,
54
        editItem,
54
        editItem,
55
        removeItem,
55
        removeItem,