Proyectos de Subversion LeadersLinked - SPA

Rev

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

Rev 3140 Rev 3146
Línea 1... Línea 1...
1
import React, { createContext, useState } from 'react'
1
import React, { createContext, useCallback } from 'react'
-
 
2
 
-
 
3
import { useFetch } from '@hooks'
Línea 2... Línea 4...
2
 
4
 
Línea 3... Línea 5...
3
export const HabitsContext = createContext()
5
export const HabitsContext = createContext()
-
 
6
 
4
 
7
export default function HabitsProvider({ url, children }) {
5
export default function HabitsProvider({ children }) {
8
  const { data, isLoading: loading, mutate } = useFetch(url, { items: [] })
6
  const [habits, setHabits] = useState([
-
 
7
    {
9
  const { items: habits, link_add, total } = data
8
      id: Date.now(),
10
 
9
      name: 'Ejercicio Diario',
11
  const addHabit = useCallback(
10
      description:
-
 
11
        'Realizar ejercicios físicos todos los días para mantenerse en forma.',
12
    (newHabit) => {
12
      action: {
13
      const newHabits = [...habits, newHabit]
13
        frequency: 'Diariamente'
14
      mutate({ ...data, items: newHabits })
14
      },
15
    },
-
 
16
    [habits, mutate]
15
      method: {
17
  )
16
        type: '',
18
 
17
        content: ''
19
  const deleteHabit = useCallback(
18
      },
20
    (habitId) => {
19
      goal: {
21
      const newHabits = habits.filter((habit) => habit.id !== habitId)
20
        amount: 30 // minutos de ejercicio diario
22
      mutate({ ...data, items: newHabits })
21
      }
23
    },
22
    }
-
 
23
  ])
24
    [habits, mutate]
24
  const [showModal, setshowModal] = useState(false)
25
  )
25
 
-
 
26
  const toggleModal = () => setshowModal(!showModal)
26
 
27
 
27
  const updateHabit = useCallback(
28
  const addHabit = (habit) => {
28
    (updatedHabit) => {
29
    const newHabit = {
29
      const newHabits = habits.map((habit) =>
-
 
30
        habit.id === updatedHabit.id ? updatedHabit : habit
30
      id: habits.length + 1,
31
      )
31
      ...habit
32
      mutate({ ...data, items: newHabits })
-
 
33
    },
-
 
34
    [habits, mutate]
-
 
35
  )
-
 
36
 
32
    }
37
  const getHabitById = useCallback(
33
    setHabits([...habits, newHabit])
38
    (habitId) => habits.find((habit) => habit.id === habitId),
Línea 34... Línea 39...
34
    toggleModal()
39
    [habits]
35
  }
40
  )
36
 
41
 
37
  return (
42
  return (
38
    <HabitsContext.Provider
43
    <HabitsContext.Provider
39
      value={{
44
      value={{
40
        setHabits,
45
        loading,
41
        habits,
46
        habits,
-
 
47
        addUrl: link_add,
-
 
48
        total,
-
 
49
        addHabit,
42
        toggleModal,
50
        deleteHabit,
43
        showModal,
51
        updateHabit,
44
        addHabit
52
        getHabitById
45
      }}
53
      }}
46
    >
54
    >