From a7c282ca348c1e8e60559e5c064caee28ba11eec Mon Sep 17 00:00:00 2001 From: Arda Serdar Pektezol <1669855+pektezol@users.noreply.github.com> Date: Wed, 9 Oct 2024 16:34:12 +0300 Subject: refactor: so much shit --- frontend/src/pages/Profile.tsx | 131 +++++++++++++++++------------------------ 1 file changed, 54 insertions(+), 77 deletions(-) (limited to 'frontend/src/pages/Profile.tsx') diff --git a/frontend/src/pages/Profile.tsx b/frontend/src/pages/Profile.tsx index 8eec23c..e20d930 100644 --- a/frontend/src/pages/Profile.tsx +++ b/frontend/src/pages/Profile.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import { useLocation, useNavigate } from 'react-router-dom'; +import { Link, useLocation, useNavigate } from 'react-router-dom'; import { SteamIcon, TwitchIcon, YouTubeIcon, PortalIcon, FlagIcon, StatisticsIcon, SortIcon, ThreedotIcon, DownloadIcon, HistoryIcon } from '../images/Images'; import { UserProfile } from '../types/Profile'; @@ -7,104 +7,74 @@ import { Game, GameChapters } from '../types/Game'; import { Map } from '../types/Map'; import { ticks_to_time } from '../utils/Time'; import "../css/Profile.css"; +import { API } from '../api/Api'; interface ProfileProps { profile?: UserProfile; + token?: string; + gameData: Game[]; } -const Profile: React.FC = ({ profile }) => { - - - const location = useLocation(); - const navigate = useNavigate(); - - React.useEffect(() => { - if (!profile) { - navigate("/"); - }; - }, [profile]); +const Profile: React.FC = ({ profile, token, gameData }) => { const [navState, setNavState] = React.useState(0); const [pageNumber, setPageNumber] = React.useState(1); const [pageMax, setPageMax] = React.useState(0); const [game, setGame] = React.useState("0") - const [gameData, setGameData] = React.useState([]); const [chapter, setChapter] = React.useState("0") const [chapterData, setChapterData] = React.useState(null); const [maps, setMaps] = React.useState([]); - function NavClick() { - if (profile) { - const btn = document.querySelectorAll("#section2 button"); - btn.forEach((e) => { (e as HTMLElement).style.backgroundColor = "#2b2e46" }); - (btn[navState] as HTMLElement).style.backgroundColor = "#202232"; + const navigate = useNavigate(); - document.querySelectorAll("section").forEach((e, i) => i >= 2 ? e.style.display = "none" : "") - if (navState === 0) { document.querySelectorAll(".profile1").forEach((e) => { (e as HTMLElement).style.display = "block" }); } - if (navState === 1) { document.querySelectorAll(".profile2").forEach((e) => { (e as HTMLElement).style.display = "block" }); } + const _update_profile = () => { + if (token) { + API.post_profile(token).then(() => navigate(0)); } - } + }; - function UpdateProfile() { - fetch(`https://lp.ardapektezol.com/api/v1/profile`, { - method: 'POST', - headers: { Authorization: "" } - }).then(r => r.json()) - .then(d => d.success ? window.alert("profile updated") : window.alert(`Error: ${d.message}`)) - } + const _get_game_chapters = async () => { + if (game && game !== "0") { + const gameChapters = await API.get_games_chapters(game); + setChapterData(gameChapters); + } else if (game && game === "0") { + setPageMax(Math.ceil(profile!.records.length / 20)); + setPageNumber(1); + } + }; - React.useEffect(() => { - if (profile) { - fetch("https://lp.ardapektezol.com/api/v1/games") - .then(r => r.json()) - .then(d => { - setGameData(d.data) - setGame("0") - }) + const _get_game_maps = async () => { + if (chapter === "0") { + const gameMaps = await API.get_game_maps(game); + setMaps(gameMaps); + setPageMax(Math.ceil(gameMaps.length / 20)); + setPageNumber(1); + } else { + const gameChapters = await API.get_chapters(chapter); + setMaps(gameChapters.maps); + setPageMax(Math.ceil(gameChapters.maps.length / 20)); + setPageNumber(1); } - }, [profile, location]); + }; + + React.useEffect(() => { + if (!profile) { + navigate("/"); + }; + }, [profile]); React.useEffect(() => { if (profile) { - if (game && game !== "0") { - fetch(`https://lp.ardapektezol.com/api/v1/games/${game}`) - .then(r => r.json()) - .then(d => { - setChapterData(d.data) - setChapter("0"); - // (document.querySelector('#select-chapter') as HTMLInputElement).value = "0" - }) - - } else if (game && game === "0") { - setPageMax(Math.ceil(profile.records.length / 20)) - setPageNumber(1) - } + _get_game_chapters(); } - }, [profile, game, location]); + }, [profile, game]); React.useEffect(() => { - if (game !== "0") { - if (chapter === "0") { - fetch(`https://lp.ardapektezol.com/api/v1/games/${game}/maps`) - .then(r => r.json()) - .then(d => { - setMaps(d.data.maps); - setPageMax(Math.ceil(d.data.maps.length / 20)) - setPageNumber(1) - }) - } else { - fetch(`https://lp.ardapektezol.com/api/v1/chapters/${chapter}`) - .then(r => r.json()) - .then(d => { - setMaps(d.data.maps); - setPageMax(Math.ceil(d.data.maps.length / 20)) - setPageNumber(1) - }) - - } + if (profile && game !== "0") { + _get_game_maps(); } - }, [game, chapter, chapterData]) + }, [profile, game, chapter, chapterData]) if (!profile) { return ( @@ -118,7 +88,7 @@ const Profile: React.FC = ({ profile }) => { {profile.profile ? ( -
UpdateProfile()}> +
profile-image Refresh
@@ -187,7 +157,14 @@ const Profile: React.FC = ({ profile }) => { {gameData === null ? :