Rev 3654 | AutorÃa | Comparar con el anterior | Ultima modificación | Ver Log |
import React, { useMemo, useState } from 'react';
import { useSelector } from 'react-redux';
import { styled } from '@mui/material';
import Widget from '@components/UI/Widget';
import SurveyForm from '@components/survey-form/SurveyForm';
import FeedDescription from './feed-description';
const FeedContainer = styled(Widget.Body)(({ theme }) => ({
padding: 0,
'& > *:not(img, video, .MuiCard-root)': {
padding: theme.spacing(0, 1)
},
'& > p, & > span': {
fontSize: '1rem',
wordWrap: 'break-word',
fontWeight: 'normal'
},
'& > img, & > video ': {
width: '100%',
maxHeight: '600px',
objectFit: 'contain',
position: 'relative'
}
}));
export default function FeedContent({ id }) {
const [showModal, setShowModal] = useState(false);
const {
owner_description: description,
owner_file_image: image,
owner_file_document: document,
owner_file_video: video,
owner_file_image_preview: imagePreview,
feed_vote_url: voteUrl,
feed_content_type: contentType,
shared_name: sharedName,
shared_image: sharedImage,
shared_time_elapse: sharedTimeElapse,
shared_description: sharedFeedDescription,
shared_file_video: sharedFileVideo,
shared_file_image_preview: sharedFileImagePreview,
shared_file_image: sharedFileImage,
shared_file_document: sharedFileDocument,
shared_content_type: sharedContentType
} = useSelector(({ feed }) => feed.feeds.byId[id]);
const answers = useMemo(() => {
if (contentType !== 'fast-survey') return [];
return Array.from(
{ length: description.number_of_answers },
(_, i) => description[`answer${i + 1}`]
);
}, [description, contentType]);
const votes = useMemo(() => {
if (contentType !== 'fast-survey') return [];
return Array.from(
{ length: description.number_of_votes ?? 0 },
(_, i) => description[`votes${i + 1}`]
);
}, [description, contentType]);
const toggleModal = () => setShowModal(!showModal);
return (
<FeedContainer>
{description && contentType !== 'fast-survey' && (
<FeedDescription description={description} />
)}
{contentType === 'video' && (
<video
poster={imagePreview}
src={video}
onClick={toggleModal}
preload='none'
controls
controlsList='nodownload'
/>
)}
{contentType === 'image' && (
<img src={image} onClick={toggleModal} loading='lazy' width='100%' height='100%' />
)}
{contentType === 'document' && (
<a href={document} target='_blank' rel='noreferrer'>
<img className='pdf' src='/images/extension/pdf.png' alt='pdf' />
</a>
)}
{contentType === 'fast-survey' && (
<SurveyForm
voteUrl={voteUrl}
active={Boolean(description.active)}
question={description.question}
time={description.time_remaining}
resultType={description.result_type}
result={description.result}
answers={answers}
votes={votes}
/>
)}
{contentType === 'shared' && (
<Widget styles={{ width: 'inherit' }}>
<Widget.Header avatar={sharedImage} title={sharedName} subheader={sharedTimeElapse} />
<FeedContainer>
<FeedDescription description={sharedFeedDescription} />
{sharedContentType === 'video' && (
<video
poster={sharedFileImagePreview}
src={sharedFileVideo}
onClick={toggleModal}
controls
preload='none'
controlsList='nodownload'
/>
)}
{sharedContentType === 'image' && (
<img src={sharedFileImage} onClick={toggleModal} loading='lazy' width='100%' />
)}
{sharedContentType === 'document' && (
<a href={sharedFileDocument} target='_blank' rel='noreferrer'>
<img className='pdf' src='/images/extension/pdf.png' alt='pdf' />
</a>
)}
</FeedContainer>
</Widget>
)}
</FeedContainer>
);
}