Proyectos de Subversion LeadersLinked - SPA

Rev

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

Rev Autor Línea Nro. Línea
3364 stevensc 1
import React, { createContext, useEffect } from 'react'
3218 stevensc 2
 
3
import { useFetch } from '@hooks'
4
 
5
export const HabitsUrlsContext = createContext()
6
 
7
export default function HabitsUrlsProvider({ children }) {
3364 stevensc 8
  const {
9
    data,
10
    isLoading: loading,
11
    mutate
12
  } = useFetch('/habits', {
3338 stevensc 13
    categories: [],
14
    emojis: []
15
  })
3356 stevensc 16
  const { categories, emojis, ...links } = data
3218 stevensc 17
 
3364 stevensc 18
  useEffect(() => {
19
    if (!categories.length || !emojis.length) return
20
 
21
    const categoriesWithEmojis = categories.map((c) => ({ ...c, emojis }))
22
    mutate({ ...data, categories: categoriesWithEmojis })
23
  }, [loading])
24
 
25
  const selectEmoji = (categoryUuid, emojiCode) => {
26
    const newCategories = categories.map((category) => {
27
      if (category.uuid === categoryUuid) {
28
        const emojis = category.emojis.filter((e) => e.code === emojiCode)
29
        return { ...category, emojis }
30
      }
31
 
32
      return category
33
    })
34
 
35
    mutate({ ...data, categories: newCategories })
36
  }
37
 
3218 stevensc 38
  return (
3341 stevensc 39
    <HabitsUrlsContext.Provider
40
      value={{
41
        loading,
3356 stevensc 42
        categories,
43
        links,
3364 stevensc 44
        selectEmoji
3341 stevensc 45
      }}
46
    >
3218 stevensc 47
      {children}
48
    </HabitsUrlsContext.Provider>
49
  )
50
}