import React from "react"; import { fetchPost } from "../../api/news"; import Loading from "../../components/Loading"; import NotFoundError from "../../components/NotFound/NotFoundError"; import './Post.sass' import { Link } from "react-router-dom"; // @ts-ignore import parser from 'bbcode-to-react'; import { connect } from "react-redux"; import { setPreloader } from "../../store/ducks/preloader"; import { Helmet } from "react-helmet"; type Props = { match: { params: { postId: number } } setPreloader: SetPreloaderStatus }; type State = { post: Unmei.PostType | null code: number }; class Post extends React.Component { state: State = { post: null, code: 0 }; componentDidMount(): void { const { match: { params: { postId } }, setPreloader } = this.props; setPreloader(true); fetchPost(postId).then(post => { post.date = new Date(post.date); this.setState({ post }); setPreloader(false); }).catch((err: Unmei.ApiError) => { this.setState({ code: err.code }) }); } render() { const { post, code } = this.state; if(code === 100) return ; if(!post) return ; return (
{post.title}
{post.title}
{parser.toReact(post.short_post)}
Автор: {post.author}
Дата: {post.date.toLocaleDateString()}, {post.date.toLocaleTimeString()}
) } } export default connect( null, dispatch => ({ setPreloader: (s: boolean) => dispatch(setPreloader(s)) }) )(Post);