// © 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
?
This post is locked!
Sign in to reply!
}Post Title:
'{post.post.title}'
Date posted:
{post.post.created_at}
{post.post.creator.username}
{post.post.body}
There isn't any replies to this post yet!
: null}Date posted:
{reply.created_at}
{reply.creator_name}
{reply.body}