import { useEffect, useState } from 'react'; import parse from 'html-react-parser'; import DataService from '../services/data-service'; import MediaService from '../services/media-service' import CategoryBar from './shared/category-bar'; import { Container,Row, Col,Spinner, UncontrolledCollapse, Button, ButtonGroup, Card, CardBody } from 'reactstrap'; import { Link, useParams, useNavigate } from 'react-router-dom'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { faLeftLong, faCopy } from '@fortawesome/free-solid-svg-icons'; import { faFacebook, faReddit, faXTwitter } from '@fortawesome/free-brands-svg-icons'; function Blog(props) { let navigate = useNavigate(); const { blogID } = useParams(); const GlobalTheme = props.GlobalTheme; const ThemeConfig = props.ThemeConfig; const [blogData, setBlogData] = useState([]); const [blogContent, setBlogContent] = useState() const replace = (node) => { if (node.type === 'tag') { if (node.name === 'a') { const newClasses = `${ThemeConfig[GlobalTheme].linkBackground} ${ThemeConfig[GlobalTheme].linkTextColor}`; const existingClasses = node.attribs.class ? `${node.attribs.class} ` : ''; node.attribs.class = `${existingClasses}${newClasses}`; node.attribs.rel = 'noopener noreferrer'; node.attribs.target = '_blank'; } if (node.name === 'img') { const newClasses = `img-fluid mt-2 mb-2 rounded mx-auto d-block`; const existingClasses = node.attribs.class ? `${node.attribs.class} ` : ''; node.attribs.class = `${existingClasses}${newClasses}`; } } }; useEffect(() => { DataService.getData(`blog/${blogID}/blog-data`).then(response =>{ setBlogData(response.data) const parsedContent = parse(response.data.contentBody, { replace }); setBlogContent(parsedContent); document.title = response.data.name } ); }, []); useEffect(() => { if (blogData.contentBody){ const parsedContent = parse(blogData.contentBody, { replace }); setBlogContent(parsedContent); } }, [GlobalTheme]) if (GlobalTheme && ThemeConfig) { return ( navigate(`/categories/${blogData.parentCategory}`)} className="ms-5 mt-5" outline> { blogData.coverImage ? :"" } = 765 ? '6':''}`}> {blogData.name} {blogData.description} Share { e.preventDefault(); navigator.clipboard.writeText(window.location.href).then(() => { props.notificationToggler("Link copied") }) return false; }}> Copy Link { e.preventDefault(); window.open(`https://www.facebook.com/sharer/sharer.php?u=${encodeURIComponent(window.location.href)}`, 'facebook-share-dialog', 'width=800,height=600'); return false; }}> Facebook { e.preventDefault(); window.open(`https://www.reddit.com/submit?url=${window.location.href}&title=${blogData.name}`, 'facebook-share-dialog', 'width=800,height=600'); return false; }}> Reddit { e.preventDefault(); window.open(`https://twitter.com/intent/tweet?text=Check%20out%20this%20article!&url=${window.location.href}`, 'facebook-share-dialog', 'width=800,height=600'); return false; }}> {blogContent} ); } else { return () } } export default Blog