import React, { useEffect, useState } from 'react' import { useRouter } from 'next/router' import api from '~utils/api' import ProfileHeader from '~components/ProfileHeader' import GridRep from '~components/GridRep' import GridRepCollection from '~components/GridRepCollection' const ProfileRoute: React.FC = () => { const router = useRouter() const { username } = router.query const [found, setFound] = useState(false) const [loading, setLoading] = useState(true) const [parties, setParties] = useState([]) const [user, setUser] = useState({ id: '', username: '', granblueId: 0 }) useEffect(() => { console.log(`Fetching profile for ${username}...`) fetchProfile(username as string) }, [username]) async function fetchProfile(username: string) { api.endpoints.users.getOne({ id: username }) .then(response => { setUser({ id: response.data.user.id, username: response.data.user.username, granblueId: response.data.user.granblue_id }) const parties: Party[] = response.data.user.parties setParties(parties.sort((a, b) => (a.created_at > b.created_at) ? -1 : 1)) }) .then(() => { setFound(true) setLoading(false) }) .catch(error => { if (error.response != null) { if (error.response.status == 404) { setFound(false) } } else { console.error(error) } }) } function render() { const content = (parties && parties.length > 0) ? renderGrids() : renderNoGrids() return (
{content}
) } function goTo(shortcode: string) { router.push(`/p/${shortcode}`) } function renderGrids() { return ( { parties.map((party, i) => { return }) } ) } function renderNoGrids() { return (

This user has no grids.

) } function renderNotFound() { return (

That user doesn't exist.

) } if (!found && !loading) { return renderNotFound() } else if (found && !loading) { return render() } else { return (
) } } export default ProfileRoute