From e7358f0d8a4ce56f7eed5927cfadf0ee29f4508f Mon Sep 17 00:00:00 2001 From: lonkaars Date: Wed, 10 Mar 2021 17:15:07 +0100 Subject: home page w/l/d + working outcome calc --- pages/index.tsx | 132 +++++++++++++++++++++++++++++--------------------------- 1 file changed, 68 insertions(+), 64 deletions(-) (limited to 'pages') diff --git a/pages/index.tsx b/pages/index.tsx index f341c35..2aa8243 100644 --- a/pages/index.tsx +++ b/pages/index.tsx @@ -1,6 +1,6 @@ -import { CSSProperties, Component } from 'react'; +import { CSSProperties, useState, useEffect } from 'react'; import axios from 'axios'; -import { userInfo } from '../api/api'; +import { userInfo, userGameTotals, userGames } from '../api/api'; import { NavBar } from '../components/navbar'; import { CenteredPage, PageTitle } from '../components/page'; @@ -79,6 +79,7 @@ function LoginOrRegisterBox() { function AccountBox(props: { info: userInfo; + sumGameInfo: userGameTotals; }) { return
{props.info.username} + }}>{props.info?.username}

Score: 400

- 0 W + {props.sumGameInfo?.win} W / - 0 V + {props.sumGameInfo?.lose} V / - 0 G + {props.sumGameInfo?.draw} G

} -export default class HomePage extends Component { - state: { - info: userInfo, - loggedIn: boolean - } = { - info: {}, - loggedIn: false - } +export default function HomePage() { + var [gotData, setGotData] = useState(false); + var [loggedIn, setLoggedIn] = useState(false); + var [userInfo, setUserInfo] = useState(); + var [gameInfo, setGameInfo] = useState(); - constructor(props: {}) { - super(props); + useEffect(() => {( async () => { + if (gotData) return; if (typeof window === "undefined") return; // return if run on server - this.state.loggedIn = document.cookie.includes("token"); + setLoggedIn(document.cookie.includes("token")); - if (this.state.loggedIn == false) return; // don't request user info if not logged in - axios.request({ + if (!loggedIn) return; // don't request user info if not logged in + var userInfoReq = await axios.request({ method: "get", url: `/api/user/info`, headers: {"content-type": "application/json"} }) - .then(request => this.setState({ info: request.data })) - .catch(() => {}); - } - - render () { - return
- - - 4 op een rij -
- - - Nieuw spel + setUserInfo(userInfoReq.data); + + var userGamesReq = await axios.request({ + method: "get", + url: `/api/user/games`, + headers: {"content-type": "application/json"} + }) + setGameInfo(userGamesReq.data); + + setGotData(true); + })()}) + + return
+ + + 4 op een rij +
+ + + Nieuw spel +
+
+ { + false && + + + Puzzels
- { - false && - - - Puzzels -
-
- } - { - false && - - - Tegen computer -
-
- } - - { - this.state.loggedIn ? - : - - } - -
+ } { - this.state.loggedIn && - - + false && + + + Tegen computer +
} + + { + loggedIn ? + : + + } + +
+ { + loggedIn && -

Nieuws ofzo

-

Chess.com heeft heel veel troep waar niemand naar kijkt

+
- -
- } + } + +

Nieuws ofzo

+

Chess.com heeft heel veel troep waar niemand naar kijkt

+
+
+
} -- cgit v1.2.3