// © 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'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; var url = Config.BaseUrl.replace('http://', ''); var protocol = Config.Protocol; const Catalog = (props) => { var id = useParams().id; const [state, setState] = useState({loading: true}); const [categories, setCategoires] = useState([]); const [category, setCategory] = useState([]); const [items, setItems] = useState({items: [], currentPage: 1, meta: []}); const user = props.user; if (!id) id = 1; const fetchCategories = async () => { await axios.get(`${protocol}apis.${url}/fetch/categories/catalog`, {headers: {"X-Requested-With":"XMLHttpRequest"}}).then(data=>{ setCategoires(data.data.categories); }).catch(error=>{console.log(error);}); } const fetchCategory = async () => { await axios.get(`${protocol}apis.${url}/fetch/category/catalog/${id}?page=${items.currentPage}`, {headers: {"X-Requested-With":"XMLHttpRequest"}}).then(data=>{ if (!data.data) {window.location.href=`/forum`;return;} setCategory(data.data.data); setItems({...items, items: data.data.items.data, meta: data.data.items}); }).catch(error=>{console.log(error);}); } const paginateitems = async (decision) => { paginate(decision, items.currentPage, items.meta).then(res=>{ switch(res){ case "increase": setItems({...items, currentPage: items.currentPage+1}); break; case "decrease": setItems({...items, currentPage: items.currentPage-1}); break; default: break; } }).catch(error=>console.log(error)); } useEffect(async ()=>{ SetTitle(`Catalog`); await fetchCategory(); await fetchCategories(); setState({...state, loading: false}); }, []); useEffect(async()=>{ setState({...state, loading: true}); await fetchCategory(); setState({...state, loading: false}); }, [items.currentPage]); return ( state.loading || categories.length <= 0 ? :

Categories:

{categories.map(category=>( <> {category.title}
))}

Options:

Search for an item:
{items.items.length <= 0 ?

There are currently no items!

: null}
{items.items.map(item=>( <>
{item.title}

{item.current_price? `$${item.current_price}` : `N/A`}

))}
{items.items.length >= 1?
{items.currentPage >= 2? : null} {items.currentPage < items.meta.last_page? : null}
: null}
); } export default Catalog;