aboutsummaryrefslogtreecommitdiff
path: root/pages/user.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'pages/user.tsx')
-rw-r--r--pages/user.tsx83
1 files changed, 34 insertions, 49 deletions
diff --git a/pages/user.tsx b/pages/user.tsx
index 01a2d23..ac6f012 100644
--- a/pages/user.tsx
+++ b/pages/user.tsx
@@ -71,65 +71,50 @@ function InfoSection(props: { children: ReactNode }) {
}
export default function AccountPage() {
- var [gotData, setGotData] = useState(false);
+ var server = typeof window === "undefined";
+ var loggedIn = !server && document.cookie.includes("token");
+ var pageID = server ? "" : new URLSearchParams(window.location.search).get("id");
+
+ if (!loggedIn && !pageID) !server && window.history.go(-1);
+ var reqData = loggedIn && pageID ? { "id": pageID } : undefined;
+
var [user, setUser] = useState<userInfo>();
- var [ownPage, setOwnPage] = useState(false);
var [gameInfo, setGameInfo] = useState<userGames>();
- var [loggedIn, setLoggedIn] = useState(false);
-
var [editingStatus, setEditingStatus] = useState(false);
-
var [relation, setRelation] = useState<userInfo["relation"]>("none");
+ var [ownPage, setOwnPage] = useState(loggedIn && !pageID);
var { toast } = useContext(ToastContext);
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");
- setLoggedIn(loggedIn);
+ var userReq = await axios.request<userInfo>({
+ method: "post",
+ url: `/api/user/info`,
+ headers: {"content-type": "application/json"}
+ });
+ setOwnPage(ownPage || userReq.data.id == pageID);
+ })()}, []);
- if (id || loggedIn) {
- var self_id = "";
- if (loggedIn && !self_id) {
- var selfReq = await axios.request<userInfo>({
- method: "get",
- url: `/api/user/info`,
- headers: {"content-type": "application/json"}
- });
- self_id = selfReq?.data.id;
- }
-
- if (id == self_id || !id) setOwnPage(true);
-
- if (!user) {
- var userReq = await axios.request<userInfo>({
- method: "post",
- url: `/api/user/info`,
- headers: {"content-type": "application/json"},
- data: { "id": id || self_id }
- });
- setUser(userReq.data);
- setRelation(userReq.data.relation || "none");
- }
-
- if (!gameInfo) {
- var userGamesReq = await axios.request<userGames>({
- method: "post",
- url: `/api/user/games`,
- headers: {"content-type": "application/json"},
- data: { "id": id || self_id }
- });
- setGameInfo(userGamesReq.data);
- }
- } else {
- window.history.go(-1);
- }
+ useEffect(() => {(async() => {
+ var userReq = await axios.request<userInfo>({
+ method: "post",
+ url: `/api/user/info`,
+ headers: {"content-type": "application/json"},
+ data: reqData
+ });
+ setUser(userReq.data);
+ setRelation(userReq.data.relation || "none");
+ })()}, []);
- setGotData(true);
- })()});
+ useEffect(() => {(async() => {
+ var userGamesReq = await axios.request<userGames>({
+ method: "post",
+ url: `/api/user/games`,
+ headers: {"content-type": "application/json"},
+ data: reqData
+ });
+ setGameInfo(userGamesReq.data);
+ })()}, []);
return <div>
<NavBar/>