Rev 7082 | Rev 7230 | Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |
import React, { useEffect, useState } from 'react'import { axios } from '../../utils'import { useParams } from 'react-router-dom'import { Col, Container, Row } from 'react-bootstrap'import { addNotification } from '../../redux/notification/notification.actions'import { useDispatch, useSelector } from 'react-redux'import {Card,CardActions,CardContent,CardMedia,Typography,} from '@mui/material'import parse from 'html-react-parser'import styled from 'styled-components'import FileDownloadIcon from '@mui/icons-material/FileDownload'import ReactionsButton from '../../components/UI/buttons/ReactionsButton'import FeedCommentSection from '../../components/feed/CommentSection'const KnowledgeCard = styled(Card)`background-color: var(--bg-color);border-radius: var(--border-radius);overflow: visible;height: fit-content;& > img {border-top-right-radius: var(--border-radius);border-top-left-radius: var(--border-radius);}`const KnowledgeActions = styled(CardActions)`& > * {flex: 1;max-width: calc(100% / 3);}`const KnowledgeViewPage = () => {const [comments, setComments] = useState([])const [knowledge, setKnowledge] = useState({category: '',title: '',description: '',link: null,image: '',attachment: '',reaction: '',routeComments: '',routeCommentAdd: '',routeSaveReaction: '',routeDeleteReaction: '',})const labels = useSelector(({ intl }) => intl.labels)const dispatch = useDispatch()const { uuid } = useParams()const changeReaction = (reaction) => {setKnowledge((prevKnowledge) => ({ ...prevKnowledge }))}useEffect(() => {axios.get(`/knowledge-area/view/${uuid}`, {headers: {'Content-Type': 'application/json',},}).then((response) => {const { data, success } = response.dataif (!success) {const errorMessage =typeof data === 'string' ? data : labels.error_there_was_an_errordispatch(addNotification({ style: 'danger', msg: errorMessage }))return}setKnowledge(data)}).catch((err) => {dispatch(addNotification({style: 'danger',msg: labels.error_there_was_an_error,}))throw new Error(err)})}, [uuid])useEffect(() => {if (!knowledge.routeComments) returnaxios.get(knowledge.routeComments).then((response) => {const { data, success } = response.dataif (!success) {const errorMessage =typeof data === 'string' ? data : labels.error_there_was_an_errordispatch(addNotification({ style: 'danger', msg: errorMessage }))return}setComments(data)}).catch((err) => {dispatch(addNotification({style: 'danger',msg: labels.error_there_was_an_error,}))throw new Error(err)})}, [knowledge])return (<Container as="section"><h2 className="text-center mb-3">{labels.knowledge_area_title}</h2><Row><Col className="mx-auto" md="8"><KnowledgeCard><CardMediacomponent="img"height="250"image={knowledge.image}alt={`${knowledge.title} image`}/><CardContent><Typography variant="h5">{knowledge.title}</Typography><Typography variant="subtitle1" color="text.secondary">{knowledge.category}</Typography>{knowledge.description && parse(knowledge.description)}</CardContent><KnowledgeActions><ReactionsButtononChange={changeReaction}currentReaction={knowledge.reaction}withLabeldeleteUrl={knowledge.routeDeleteReaction}saveUrl={knowledge.routeSaveReaction}/>{knowledge.attachment && (<ahref={knowledge.attachment}downloadclassName="btn reaction-btn"><FileDownloadIcon />{labels.knowledge_area_download_attachment}</a>)}{knowledge.link && (<ahref={knowledge.link}className="btn reaction-btn"target="_blank"rel="noreferrer">{labels.knowledge_area_go_to_link}</a>)}</KnowledgeActions><div className="px-3"><FeedCommentSectioncurrentComments={comments}addUrl={knowledge.routeCommentAdd}isShow/></div></KnowledgeCard></Col></Row></Container>)}export default KnowledgeViewPage