From 38fa15ab977ba815c68dc618edda76594f6f703d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tr=C3=A8sAbhi?= <43380238+tresabhi@users.noreply.github.com> Date: Sun, 28 Apr 2024 19:16:08 -0500 Subject: [PATCH] feat: cc account tracking 2 --- src/app/tools/session/page.tsx | 36 +++++++++++++++++++++++++------- src/core/blitz/fetchBlitz.ts | 4 +++- src/core/blitz/getAccountInfo.ts | 10 +++++++-- src/core/blitz/getTankStats.ts | 10 +++++++-- 4 files changed, 48 insertions(+), 12 deletions(-) diff --git a/src/app/tools/session/page.tsx b/src/app/tools/session/page.tsx index 9db52d701..740e728db 100644 --- a/src/app/tools/session/page.tsx +++ b/src/app/tools/session/page.tsx @@ -1,6 +1,6 @@ 'use client'; -import { MagnifyingGlassIcon } from '@radix-ui/react-icons'; +import { InfoCircledIcon, MagnifyingGlassIcon } from '@radix-ui/react-icons'; import { AlertDialog, Button, @@ -16,6 +16,7 @@ import PageWrapper from '../../../components/PageWrapper'; import { UNLOCALIZED_REGION_NAMES_SHORT } from '../../../constants/regions'; import { WARGAMING_APPLICATION_ID } from '../../../constants/wargamingApplicationID'; import { getAccountInfo } from '../../../core/blitz/getAccountInfo'; +import getTankStats from '../../../core/blitz/getTankStats'; import { idToRegion } from '../../../core/blitz/idToRegion'; import searchPlayersAcrossRegions, { AccountListWithServer, @@ -44,15 +45,34 @@ export default function Page() { useEffect(() => { (async () => { - if (!session.tracking) return; + if (!session.tracking || !input.current) return; - const accountInfo = await getAccountInfo( - idToRegion(session.player.id), + let accountInfo = await getAccountInfo( + session.player.region, + session.player.id, + ); + let tankStats = await getTankStats( + session.player.region, session.player.id, ); if (accountInfo === null) { if (login?.id === session.player.id) { + accountInfo = await getAccountInfo( + idToRegion(session.player.id), + session.player.id, + [], + { access_token: login.token }, + ); + tankStats = await getTankStats( + idToRegion(session.player.id), + session.player.id, + { access_token: login.token }, + ); + + console.log(accountInfo, tankStats); + + input.current.value = accountInfo.nickname; } else { setShowFurtherVerification(true); } @@ -68,13 +88,15 @@ export default function Page() { We need further verification - You're trying to track a CC account with private statistics. - Please sign in to verify the ownership of this account. + You're trying to track a CC account which have private statistics. + Please sign in to verify the ownership of this account. Individual + tank statistics won't be available. {login && ( - You are currently signed with a different account. + You are currently signed with a different + account. )} diff --git a/src/core/blitz/fetchBlitz.ts b/src/core/blitz/fetchBlitz.ts index 366e7f09f..64a05e453 100644 --- a/src/core/blitz/fetchBlitz.ts +++ b/src/core/blitz/fetchBlitz.ts @@ -60,10 +60,12 @@ async function manageQueue() { } } +export type FetchBlitzParams = Record; + export default function fetchBlitz( region: Region, path: string, - params: Record = {}, + params: FetchBlitzParams = {}, ) { return new Promise((resolve) => { queue.push({ diff --git a/src/core/blitz/getAccountInfo.ts b/src/core/blitz/getAccountInfo.ts index 51f602f0c..df03b7242 100644 --- a/src/core/blitz/getAccountInfo.ts +++ b/src/core/blitz/getAccountInfo.ts @@ -1,5 +1,5 @@ import { Region } from '../../constants/regions'; -import fetchBlitz from './fetchBlitz'; +import fetchBlitz, { FetchBlitzParams } from './fetchBlitz'; import { normalizeIds } from './normalizeIds'; export interface AllStats { @@ -95,10 +95,16 @@ export async function getAccountInfo< ReturnType = Ids extends number ? IndividualAccountInfo : IndividualAccountInfo[], ->(region: Region, ids: Ids, extra: string[] = []) { +>( + region: Region, + ids: Ids, + extra: string[] = [], + params: FetchBlitzParams = {}, +) { const object = await fetchBlitz(region, 'account/info', { account_id: normalizeIds(ids), extra: extra.length === 0 ? undefined : extra.join(','), + ...params, }); if (typeof ids === 'number') { diff --git a/src/core/blitz/getTankStats.ts b/src/core/blitz/getTankStats.ts index 060efc064..5ba5f52f2 100644 --- a/src/core/blitz/getTankStats.ts +++ b/src/core/blitz/getTankStats.ts @@ -1,10 +1,16 @@ import { Region } from '../../constants/regions'; import { TanksStats } from '../../types/tanksStats'; -import fetchBlitz from './fetchBlitz'; +import fetchBlitz, { FetchBlitzParams } from './fetchBlitz'; -export default async function getTankStats(region: Region, id: number) { +export default async function getTankStats( + region: Region, + id: number, + + params?: FetchBlitzParams, +) { const tankStats = await fetchBlitz(region, 'tanks/stats', { account_id: id, + ...params, }); return tankStats[id];