Proyectos de Subversion LeadersLinked - SPA

Rev

Rev 3112 | Rev 3146 | Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |

import { useCallback } from 'react'
import { useFetch } from '../useFetch'

export function useHabits({ url }) {
  const {
    data: { items: habits, link_add, total },
    isLoading: loading,
    mutate
  } = useFetch(url)

  const addHabit = useCallback(
    (newHabit) => {
      const newHabits = [...habits, newHabit]
      mutate(newHabits)
    },
    [habits, mutate]
  )

  const deleteHabit = useCallback(
    (habitId) => {
      const newHabits = habits.filter((habit) => habit.id !== habitId)
      mutate(newHabits)
    },
    [habits, mutate]
  )

  const updateHabit = useCallback(
    (updatedHabit) => {
      const newHabits = habits.map((habit) =>
        habit.id === updatedHabit.id ? updatedHabit : habit
      )
      mutate(newHabits)
    },
    [habits, mutate]
  )

  return {
    loading,
    habits,
    addUrl: link_add,
    total,
    addHabit,
    deleteHabit,
    updateHabit
  }
}