import { ReactNode, Children, useState, useEffect } from 'react';
import Icon from '@mdi/react';
import axios from 'axios';
import { NavBar } from '../components/navbar';
import { CenteredPage, PageTitle } from '../components/page';
import { Vierkant, IconLabelButton } from '../components/ui';
import { AccountAvatar } from '../components/account';
import { userInfo, userGames } from '../api/api';
import RecentGames from '../components/recentGames';
import PersonAddOutlinedIcon from '@material-ui/icons/PersonAddOutlined';
import AssignmentIndOutlinedIcon from '@material-ui/icons/AssignmentIndOutlined';
import ArrowDownwardOutlinedIcon from '@material-ui/icons/ArrowDownwardOutlined';
import ArrowUpwardOutlinedIcon from '@material-ui/icons/ArrowUpwardOutlined';
import PeopleOutlineOutlinedIcon from '@material-ui/icons/PeopleOutlineOutlined';
import EditOutlinedIcon from '@material-ui/icons/EditOutlined';
import SettingsOutlinedIcon from '@material-ui/icons/SettingsOutlined';
import {
mdiAccountCancelOutline,
mdiEqual,
mdiCheckboxBlankCircle,
mdiClipboardTextOutline,
mdiGamepadSquareOutline,
mdiEarth } from '@mdi/js';
function InfoModule(props: {
label: string;
icon: ReactNode;
}) {
return
{props.icon}
{props.label}
}
function InfoSection(props: { children: ReactNode }) {
return
{props.children}
}
export default function AccountPage() {
var [gotData, setGotData] = useState(false);
var [user, setUser] = useState();
var [ownPage, setOwnPage] = useState(false);
var [gameInfo, setGameInfo] = useState();
useEffect(() => {(async() => {
if (gotData) return;
if (typeof window === "undefined") return;
var id = new URLSearchParams(window.location.search).get("id");
var loggedIn = document.cookie.includes("token");
if (id || loggedIn) {
var self_id = "";
if (loggedIn) {
var selfReq = await axios.request({
method: "get",
url: `/api/user/info`,
headers: {"content-type": "application/json"}
});
self_id = selfReq?.data.id;
}
if (id == self_id || !id) setOwnPage(true);
var userReq = await axios.request({
method: "post",
url: `/api/user/info`,
headers: {"content-type": "application/json"},
data: { "id": id || self_id }
});
setUser(userReq.data);
var userGamesReq = await axios.request({
method: "post",
url: `/api/user/games`,
headers: {"content-type": "application/json"},
data: { "id": id || self_id }
});
setGameInfo(userGamesReq.data);
} else {
window.history.go(-1);
}
setGotData(true);
})()})
return
Profiel
{user?.username}
{user?.status}
{
ownPage ?
} text="Instellingen"/>
} text="Status bewerken"/>
:
} text="Blokkeren"/>
} text="Vriendschapsverzoek"/>
}
} label="Online"/>
} label={ (() => {
var memberSince = "Lid sinds";
var registered = new Date(user?.registered);
memberSince += " " + registered.toLocaleString("nl-nl", { month: "long", day: "numeric" });
var currentYear = new Date().getFullYear();
var memberYear = registered.getFullYear();
if (currentYear != memberYear) memberSince += " " + memberYear;
return memberSince;
})() }/>
} label="2 vrienden"/>
} label="Nederland"/>
} label={ gameInfo?.totals.win + " keer gewonnen" }/>
} label={ gameInfo?.totals.draw + " keer gelijkspel" }/>
} label={ gameInfo?.totals.lose + " keer verloren" }/>
} label="Score: 400"/>
} label={ gameInfo?.totals.games + " potjes" }/>
}