// © XlXi 2021
// Graphictoria 5
import axios from 'axios';
import React, { useEffect, useState } from "react";
import { Link, useHistory } 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 { MiniCard, MiniCardTitle } from '../Components/Card.js';
import { paginate } from '../helpers/utils.js';
var url = Config.BaseUrl.replace('http://', '');
var protocol = Config.Protocol;
const Dashboard = (props) => {
const [state, setState] = useState({loading: true});
const [validity, setValidity] = useState({error: false, message: ``, inputs: []});
const [feedState, setFeedState] = useState({loading: true, posts: {posts: [], meta: [], currentPage: 1}});
const user = props.user;
const createFeed = async () => {
setFeedState({...feedState.posts, loading: true});
await axios.post(`${protocol}apis.${url}/api/create/feed`, new FormData(document.getElementById(`form`)), {headers: {"X-Requested-With":"XMLHttpRequest"}}).then(data=>{
const res = data.data;
if (res.badInputs.length >= 1) {
setValidity({error: true, message:res.message, inputs: res.badInputs});
setTimeout(()=>{setValidity({...validity, error: false, inputs: res.badInputs});}, 4000);
setFeedState({...feedState, loading: false});
}else{
document.getElementById('input').value = "";
setFeedState({loading: false, posts: {...feedState.posts, posts: res.data.data, meta: res.data}});
}
}).catch(error=>{console.log(error);});
}
const fetchFeed = async () => {
await axios.get(`${protocol}apis.${url}/fetch/feed?page=${feedState.posts.currentPage}`, {headers: {"X-Requested-With":"XMLHttpRequest"}}).then(data=>{
const res = data.data;
setFeedState({loading: false, posts: {...feedState.posts,posts: res.data.data, meta: res.data}});
}).catch(error=>{console.log(error);});
}
const paginatePosts = async (decision) => {
paginate(decision, feedState.posts.currentPage, feedState.posts.meta).then(res=>{
switch(res){
case "increase":
setFeedState({...feedState, posts: {...feedState.posts, currentPage: feedState.posts.currentPage+1}});
break;
case "decrease":
setFeedState({...feedState, posts: {...feedState.posts, currentPage: feedState.posts.currentPage-1}});
break;
default:
break;
}
}).catch(error=>console.log(error));
}
useEffect(()=>{
SetTitle(`Dashboard`);
fetchFeed();
setState({loading: false});
}, []);
useEffect(async()=>{
setState({loading: true});
await fetchFeed();
setState({loading: false});
}, [feedState.posts.currentPage]);
return (
state.loading
?
"{ user.about }"
{validity.message}
{feed.creatorName}
"{feed.body}"
There isn't any posts right now!
: null} {feedState.posts.posts.length >= 1?