Proyectos de Subversion LeadersLinked - SPA

Rev

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