Proyectos de Subversion LeadersLinked - SPA

Rev

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

import React, { createContext, useEffect } from 'react'

import { useFetch } from '@hooks'

export const HabitsUrlsContext = createContext()

export default function HabitsUrlsProvider({ children }) {
  const {
    data,
    isLoading: loading,
    mutate
  } = useFetch('/habits', {
    categories: [],
    emojis: []
  })
  const { categories, emojis, ...links } = data

  useEffect(() => {
    if (!categories.length || !emojis.length) return

    const categoriesWithEmojis = categories.map((c) => ({ ...c, emojis }))
    mutate({ ...data, categories: categoriesWithEmojis })
  }, [loading])

  const selectEmoji = (categoryUuid, emojiCode) => {
    const newCategories = categories.map((category) => {
      if (category.uuid === categoryUuid) {
        const emojis = category.emojis.filter((e) => e.code === emojiCode)
        return { ...category, emojis }
      }

      return category
    })

    mutate({ ...data, categories: newCategories })
  }

  return (
    <HabitsUrlsContext.Provider
      value={{
        loading,
        categories,
        links,
        selectEmoji
      }}
    >
      {children}
    </HabitsUrlsContext.Provider>
  )
}