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]})