// © XlXi 2021 // Graphictoria 5 import axios from 'axios'; import React, { useEffect, useState } from "react"; import { Link, useHistory, useParams } from "react-router-dom"; import Config from '../config.js'; import SetTitle from "../Helpers/Title.js"; import Loader from '../Components/Loader.js'; import { GenericErrorModal } from './Errors.js'; import { Card, CardTitle } from '../Components/Card.js'; import { paginate } from '../helpers/utils.js'; var url = Config.BaseUrl.replace('http://', ''); var protocol = Config.Protocol; const Post = (props) => { var id = useParams().id; const [state, setState] = useState({offline: false, loading: true}); const [post, setPost] = useState({post: [], replies: {replies: [], meta: [], currentPage: 1}}); const user = props.user; const history = useHistory(); const fetchPost = async () => { await axios.get(`${protocol}apis.${url}/fetch/post/${id}?page=${post.replies.currentPage}`, {headers: {"X-Requested-With":"XMLHttpRequest"}}).then(data=>{ if (!data.data) {history.push(`/forum`);} const res = data.data; setPost({post: res.post, replies: {...post.replies, replies: res.replies.data, meta: res.replies}}); }).catch(error=>{console.log(error);}); } const paginateReplies = async (decision) => { paginate(decision, post.replies.currentPage, post.replies.meta).then(res=>{ switch(res){ case "increase": setPost({...post, replies: {...post.replies, currentPage: post.replies.currentPage+1}}); break; case "decrease": setPost({...post, replies: {...post.replies, currentPage: post.replies.currentPage-1}}); break; default: break; } }).catch(error=>console.log(error)); } useEffect(async ()=>{ SetTitle(`Forum`); setState({...state, loading: false}); }, []); useEffect(async()=>{ setState({...state, loading: true}); await fetchPost(); setState({...state, loading: false}); }, [post.replies.currentPage]); return ( state.loading ? :
{post.post.locked == 1?

This post is locked!

:
{user && user.username? Reply :

Sign in to reply!

}
}

Post Title:

'{post.post.title}'

Date posted:

{post.post.created_at}


{post.post.creator.username}

{post.post.body}


{post.replies.replies.length <= 0 && post.post.locked != 1?

There isn't any replies to this post yet!

: null}
{post.replies.replies.map(reply=>(

Date posted:

{reply.created_at}


{reply.creator_name}

{reply.body}

))} {post.replies.replies.length >= 10?
{post.replies.currentPage >= 2? : null} {post.replies.currentPage < post.replies.meta.last_page? : null}
: null}
); } export default Post;