From 8e2302a6d4cd7fc6e65523eb43245822d643e4cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tr=C3=A8sAbhi?= <43380238+tresabhi@users.noreply.github.com> Date: Thu, 23 May 2024 14:05:25 -0500 Subject: [PATCH] feat: start of homepage tracking --- src/app/tools/session/page.tsx | 111 +++++++++++++++++++++++++-------- 1 file changed, 84 insertions(+), 27 deletions(-) diff --git a/src/app/tools/session/page.tsx b/src/app/tools/session/page.tsx index 532700f6f..7f6436461 100644 --- a/src/app/tools/session/page.tsx +++ b/src/app/tools/session/page.tsx @@ -15,6 +15,7 @@ import { IconButton, Link, Select, + Spinner, Table, Text, TextField, @@ -52,7 +53,12 @@ import mutateSession, { } from '../../../stores/session'; import { IndividualTankStats } from '../../../types/tanksStats'; -export default function Page() { +export default function Page({ + searchParams, +}: { + searchParams: { id?: string }; +}) { + const [loaded, setLoaded] = useState(false); const wideFormat = useWideFormat(640); const awaitedTankDefinitions = use(tankDefinitions); const awaitedTankAvearges = use(tankAverages); @@ -105,6 +111,7 @@ export default function Page() { : undefined, [delta], ); + const [showLinkOverridePrompt, setShowLinkOverridePrompt] = useState(true); const search = debounce(async () => { if (!input.current) return; @@ -113,6 +120,32 @@ export default function Page() { setSearching(false); }, 500); + async function track(id: number) { + const region = idToRegion(id); + const player = await getAccountInfo(region, id); + const stats = await getTankStats(region, id); + + if (stats === null) { + setShowCCInaccessibilityPrompt(true); + return; + } + + setShowSearch(false); + mutateSession((draft) => { + if (!input.current) return; + + draft.tracking = true; + (draft as SessionTracking).player = { + id, + region, + since: Date.now(), + stats, + }; + + input.current.value = player.nickname; + }); + } + useEffect(() => { async function update() { if (!session.tracking) return; @@ -130,6 +163,22 @@ export default function Page() { return () => clearInterval(interval); }, [session.tracking && session.player.id]); + useEffect(() => { + setLoaded(true); + + if (searchParams.id && !session.tracking) { + track(Number(searchParams.id)); + } + }, []); + + if (!loaded) { + return ( + + + + ); + } + return ( + {searchParams.id && + session.tracking && + Number(searchParams.id) !== session.player.id && ( + + + + You are currently tracking {accountInfo?.nickname} + + + Would you like to stop tracking {accountInfo?.nickname} and + start tracking a new player? + + + + + + + + + + )} + {!session.tracking && ( { - const stats = await getTankStats( - player.region, - player.account_id, - ); - - if (stats === null) { - setShowCCInaccessibilityPrompt(true); - return; - } - - setShowSearch(false); - mutateSession((draft) => { - if (!input.current) return; - - draft.tracking = true; - (draft as SessionTracking).player = { - id: player.account_id, - region: player.region, - since: Date.now(), - stats, - }; - - input.current.value = player.nickname; - }); - }} + onClick={() => track(player.account_id)} > {player.nickname} ( {UNLOCALIZED_REGION_NAMES_SHORT[player.region]})