Rev 3386 | Rev 3694 | Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |
import React, { useEffect, useRef, useState } from 'react'import { useDispatch } from 'react-redux'import { Backdrop, IconButton } from '@mui/material'import { Close } from '@mui/icons-material'import { useHabitsUrls } from '@hooks'import { useDailyLogCategories } from './use-daily-log-categories'import { savePreferences } from '@services/habits/daily-log'import { addNotification } from '@store/notification/notification.actions'import Widget from '@components/UI/Widget'import DailyLogForm from './daily-log-form'import DailyMediaContent from './daily-media-content'export default function DailyLog() {const [show, setShow] = useState(false)const [dailyMediaContent, setDailyMediaContent] = useState(null)const mediaRef = useRef(null)const dispatch = useDispatch()const { selectEmoji, categories } = useDailyLogCategories()const { links } = useHabitsUrls()const allCategoriesSelected =categories.length && categories.every((cat) => cat.selected)const saveDailyLog = async (log) => {try {const mediaResponse = await savePreferences(links.link_aspect_daily_log,log)mediaResponse.link ? setDailyMediaContent(mediaResponse) : setShow(false)} catch (error) {dispatch(addNotification({ style: 'danger', msg: error.message }))}}useEffect(() => {if (!allCategoriesSelected) setShow(true)}, [allCategoriesSelected])useEffect(() => {if (!show && !mediaRef.current?.paused) setDailyMediaContent(null)}, [show, mediaRef.current, setDailyMediaContent])return (<Backdrop sx={{ color: '#fff', zIndex: 1250 }} open={show}><Widget styles={{ maxWidth: '800px' }}><Widget.HeaderrenderAction={() =>dailyMediaContent ? (<IconButton onClick={() => setShow(false)}><Close /></IconButton>) : null}/><Widget.Body>{dailyMediaContent ? (<DailyMediaContenttype={dailyMediaContent.type}mediaUrl={dailyMediaContent.link}ref={mediaRef}/>) : (<DailyLogFormcategories={categories}onSelect={selectEmoji}onSubmit={saveDailyLog}/>)}</Widget.Body></Widget></Backdrop>)}