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 HabitsContext = createContext();
5
export const HabitsContext = createContext()
6
 
6
 
Línea 7... Línea 7...
7
export default function HabitsProvider({ url, children }) {
7
export default function HabitsProvider({ url, children }) {
8
  const { data, loading: loading, mutate } = useFetch(url, { items: [] });
8
  const { data, isLoading: loading, mutate } = useFetch(url, { items: [] })
9
  const { items: habits, link_add, total } = data;
9
  const { items: habits, link_add, total } = data
10
 
10
 
11
  const addHabit = useCallback(
11
  const addHabit = useCallback(
12
    (newHabit) => {
12
    (newHabit) => {
13
      const newHabits = [newHabit, ...habits];
13
      const newHabits = [newHabit, ...habits]
Línea 14... Línea 14...
14
      mutate({ ...data, items: newHabits });
14
      mutate({ ...data, items: newHabits })
15
    },
15
    },
16
    [habits, mutate]
16
    [habits, mutate]
17
  );
17
  )
18
 
18
 
19
  const removeHabit = useCallback(
19
  const removeHabit = useCallback(
20
    (habitId) => {
20
    (habitId) => {
Línea 21... Línea 21...
21
      const newHabits = habits.filter((habit) => habit.id !== habitId);
21
      const newHabits = habits.filter((habit) => habit.id !== habitId)
22
      mutate({ ...data, items: newHabits });
22
      mutate({ ...data, items: newHabits })
23
    },
23
    },
24
    [habits, mutate]
24
    [habits, mutate]
25
  );
25
  )
26
 
26
 
27
  const updateHabit = useCallback(
27
  const updateHabit = useCallback(
28
    (updatedHabit) => {
28
    (updatedHabit) => {
29
      const newHabits = habits.map((habit) =>
29
      const newHabits = habits.map((habit) =>
Línea 30... Línea 30...
30
        habit.id === updatedHabit.id ? updatedHabit : habit
30
        habit.id === updatedHabit.id ? updatedHabit : habit
31
      );
31
      )
32
      mutate({ ...data, items: newHabits });
32
      mutate({ ...data, items: newHabits })
33
    },
33
    },
Línea 34... Línea 34...
34
    [habits, mutate]
34
    [habits, mutate]
35
  );
35
  )
36
 
36
 
37
  const getHabitById = useCallback(
37
  const getHabitById = useCallback(
Línea 47... Línea 47...
47
        addUrl: link_add,
47
        addUrl: link_add,
48
        total,
48
        total,
49
        addHabit,
49
        addHabit,
50
        removeHabit,
50
        removeHabit,
51
        updateHabit,
51
        updateHabit,
52
        getHabitById,
52
        getHabitById
53
      }}
53
      }}
54
    >
54
    >
55
      {children}
55
      {children}
56
    </HabitsContext.Provider>
56
    </HabitsContext.Provider>
57
  );
57
  )
58
}
58
}