Proyectos de Subversion LeadersLinked - SPA

Rev

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

Rev Autor Línea Nro. Línea
3358 stevensc 1
import React, { useEffect, useState } from 'react'
2
import { useDispatch } from 'react-redux'
3
import { Backdrop } from '@mui/material'
4
 
5
import { useHabitsUrls } from '@hooks'
6
import { useDailyLogCategories } from './use-daily-log-categories'
7
import { savePreferences } from '@services/habits/daily-log'
8
import { addNotification } from '@store/notification/notification.actions'
9
 
10
import Widget from '@components/UI/Widget'
11
import DailyLogForm from './daily-log-form'
3367 stevensc 12
import DailyMediaContent from './daily-media-content'
3358 stevensc 13
 
14
export default function DailyLog() {
15
  const [show, setShow] = useState(false)
16
  const [dailyMediaContent, setDailyMediaContent] = useState(null)
17
  const dispatch = useDispatch()
18
 
19
  const { selectEmoji, categories } = useDailyLogCategories()
20
  const { links } = useHabitsUrls()
21
 
22
  const allCategoriesSelected =
23
    categories.length && categories.every((cat) => cat.selected)
24
 
25
  const saveDailyLog = async (log) => {
26
    try {
27
      const mediaResponse = await savePreferences(
28
        links.link_aspect_daily_log,
29
        log
30
      )
31
      setDailyMediaContent(mediaResponse)
32
      setShow(false)
33
    } catch (error) {
34
      dispatch(addNotification({ style: 'danger', msg: error.message }))
35
    }
36
  }
37
 
38
  useEffect(() => {
39
    if (!allCategoriesSelected) setShow(true)
40
  }, [allCategoriesSelected])
41
 
42
  return (
43
    <Backdrop sx={{ color: '#fff', zIndex: 1250 }} open={show}>
44
      <Widget styles={{ maxWidth: '800px' }}>
45
        <Widget.Body>
46
          {dailyMediaContent ? (
3367 stevensc 47
            <DailyMediaContent type='video' mediaUrl={dailyMediaContent} />
3358 stevensc 48
          ) : (
49
            <DailyLogForm
50
              categories={categories}
51
              onSelect={selectEmoji}
52
              onSubmit={saveDailyLog}
53
            />
54
          )}
55
        </Widget.Body>
56
      </Widget>
57
    </Backdrop>
58
  )
59
}