import { useEffect, useState, useRef } from 'react'; import EditableDataService from '../../services/editable-data-service'; import EditableMediaService from '../../services/editable-media-service' import CategoryBar from './shared/category-bar'; import EditorComponent from './shared/tiptap'; import ModalComponent from './shared/modal-component'; import MediaUpload from './shared/media-upload' import { faLeftLong } from '@fortawesome/free-solid-svg-icons'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { Container,Row, Col,Spinner, UncontrolledCollapse, Button, ButtonGroup, Card, CardBody, Input, InputGroup, InputGroupText } from 'reactstrap'; import { useNavigate, useParams } from 'react-router-dom'; function Blog(props) { let navigate = useNavigate(); const nameField = useRef(null); const descriptionField = useRef(null); const tagLineField = useRef(null); const { blogID } = useParams(); const GlobalTheme = props.GlobalTheme; const ThemeConfig = props.ThemeConfig; const [blogData, setBlogData] = useState([]); const [blogContent, setBlogContent] = useState(); const [coverImage, setCoverImage] = useState(false) const [modal, setModal] = useState(false); const [modalText, setModalText] = useState(false); const [modalTitle, setModalTitle] = useState(false); const [fileModal, setFileModal] = useState(false); const toggle = () => setModal(!modal); const toggleFileModal = () => setFileModal(!fileModal); const setInfo = (event) => { EditableDataService.updateData(`/data/blog/update/${blogID}/`,{ "name": nameField.current.value, "description": descriptionField.current.value, "tagline": tagLineField.current.value, "content_body": blogContent, "cover_image": coverImage ? coverImage !== '-' ? coverImage : '' : blogData.coverImage }).then(response => { props.notificationToggler('Blog data saved!'); getInfo() }).catch(error => { props.notificationToggler('Failed to update blog!', 'danger'); }); } const showModal = () => { setModalTitle('Confirm') setModalText('Are you sure that you wish to delete this blog?') toggle() } const deleteResource = () => { EditableDataService.deleteData(`/data/blog/delete/${blogData.id}/`).then(response => { props.notificationToggler('Blog successfully deleted') navigate(`/categories/${blogData.parentCategory}`); }).catch(error => { props.notificationToggler('Failed to delete blog', 'danger'); }); toggle() } const getInfo = () => { EditableDataService.getData(`/data/blog/${blogID}/`).then(response => { let responseData = response.data setBlogData({ "id": responseData["blog_id"], "name": responseData["name"], "description": responseData["description"], "tagLine": responseData["tagline"], "coverImage": responseData["cover_image"], "parentCategory": responseData["parent_category"] }) setBlogContent(responseData["content_body"]) } ); } useEffect(() => { getInfo() }, []); useEffect(() => { if (coverImage){ setInfo() if (coverImage !== '-') toggleFileModal() } }, [coverImage]) if (GlobalTheme && ThemeConfig && blogData) { return ( { blogData.coverImage !== "" ? Banner:"" } = 765 ? '6':''}`}> Name Description Tagline
); } else { return () } } export default Blog