From 9e89198cd5bc09d86703dd4fe1df7322f2a734f5 Mon Sep 17 00:00:00 2001 From: tresabhi Date: Sat, 23 Sep 2023 23:30:14 +0000 Subject: [PATCH] fix: a few type issues --- .vscode/settings.json | 2 + src/components/Breakdown/components/Row.tsx | 16 ++---- src/core/blitz/getWargamingResponse.ts | 15 +++-- src/renderers/today.tsx | 63 +++++++++++++++++---- src/types/accountInfo.ts | 20 ++++--- 5 files changed, 77 insertions(+), 39 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index 0636a141e..e63c24f60 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -6,6 +6,8 @@ "blitzstars", "cleandist", "customperiod", + "deburr", + "diacriticless", "Everytime", "fullstats", "fuzzysort", diff --git a/src/components/Breakdown/components/Row.tsx b/src/components/Breakdown/components/Row.tsx index c1972ee73..fbbaa2717 100644 --- a/src/components/Breakdown/components/Row.tsx +++ b/src/components/Breakdown/components/Row.tsx @@ -4,18 +4,12 @@ import { theme } from '../../../stitches.config'; import { TREE_TYPE_ICONS, TreeTypeEnum } from '../../Tanks'; import { RowStat } from './RowStat'; -type RowProps = ( - | { - type: 'tank'; - treeType?: TreeTypeEnum; - tankType?: TankType; - } - | { - type: 'summary'; - } -) & { +interface RowProps { + type: 'tank' | 'summary'; title: string; minimized?: boolean; + treeType?: TreeTypeEnum; + tankType?: TankType; rows: { title: string; @@ -24,7 +18,7 @@ type RowProps = ( delta?: number; percentile?: Percentile; }[]; -}; +} export function Row(props: RowProps) { return ( diff --git a/src/core/blitz/getWargamingResponse.ts b/src/core/blitz/getWargamingResponse.ts index d0ce1d917..2c4848455 100644 --- a/src/core/blitz/getWargamingResponse.ts +++ b/src/core/blitz/getWargamingResponse.ts @@ -13,17 +13,16 @@ export type WargamingResponse = export default async function getWargamingResponse( url: string, ) { - let parsed: WargamingResponse; + const data = (await fetch(url).then((response) => + response.json(), + )) as WargamingResponse; - const response = await fetch(url); - parsed = (await response.json()) as WargamingResponse; - - if (parsed.status === 'ok') { - return parsed.data; + if (data.status === 'ok') { + return data.data; } else { throw throwError( - `Wargaming response error status:"${parsed.status}"`, - `Message: "${parsed.error.message}"\nURL: "${url}"`, + `Wargaming response error status:"${data.status}"`, + `Message: "${data.error.message}"\nURL: "${url}"`, ); } } diff --git a/src/renderers/today.tsx b/src/renderers/today.tsx index 4b8c386cd..9dfdbfa89 100644 --- a/src/renderers/today.tsx +++ b/src/renderers/today.tsx @@ -2,9 +2,11 @@ import * as Breakdown from '../components/Breakdown'; import NoData, { NoDataType } from '../components/NoData'; import TitleBar from '../components/TitleBar'; import Wrapper from '../components/Wrapper'; +import { WARGAMING_APPLICATION_ID } from '../constants/wargamingApplicationID'; import calculateWN8 from '../core/blitz/calculateWN8'; import getTankStats from '../core/blitz/getTankStats'; import getTreeType from '../core/blitz/getTreeType'; +import getWN8Percentile from '../core/blitz/getWN8Percentile'; import getWargamingResponse from '../core/blitz/getWargamingResponse'; import resolveTankName from '../core/blitz/resolveTankName'; import sumStats from '../core/blitz/sumStats'; @@ -129,21 +131,60 @@ export default async function today( const tankopediaEntry = (await tankopedia)[id]; return ( + // maximized : index + 1 > maximized} + // key={id} + // name={showTotal && id === 0 ? 'Total' : await resolveTankName(id)} + // winrate={tankStats.wins / tankStats.battles} + // careerWinrate={career.wins / career.battles} + // WN8={isNaN(todayWN8s[id]) ? undefined : todayWN8s[id]} + // careerWN8={isNaN(careerWN8s[id]) ? undefined : careerWN8s[id]} + // damage={tankStats.damage_dealt / tankStats.battles} + // careerDamage={career.damage_dealt / career.battles} + // battles={tankStats.battles} + // careerBattles={career.battles} + // /> maximized : index + 1 > maximized} - key={id} - name={showTotal && id === 0 ? 'Total' : await resolveTankName(id)} - winrate={tankStats.wins / tankStats.battles} - careerWinrate={career.wins / career.battles} - WN8={isNaN(todayWN8s[id]) ? undefined : todayWN8s[id]} - careerWN8={isNaN(careerWN8s[id]) ? undefined : careerWN8s[id]} - damage={tankStats.damage_dealt / tankStats.battles} - careerDamage={career.damage_dealt / career.battles} - battles={tankStats.battles} - careerBattles={career.battles} + rows={[ + { + title: 'Winrate', + current: `${(tankStats.wins / tankStats.battles).toFixed(2)}%`, + career: `${(career.wins / career.battles).toFixed(2)}%`, + delta: + tankStats.wins / tankStats.battles - + career.wins / career.battles, + }, + { + title: 'WN8', + current: isNaN(todayWN8s[id]) ? undefined : todayWN8s[id], + career: isNaN(careerWN8s[id]) ? undefined : careerWN8s[id], + percentile: isNaN(todayWN8s[id]) + ? undefined + : getWN8Percentile(todayWN8s[id]), + }, + { + title: 'Damage', + current: (tankStats.damage_dealt / tankStats.battles).toFixed(0), + career: (career.damage_dealt / career.battles).toFixed(0), + delta: + tankStats.damage_dealt / tankStats.battles - + career.damage_dealt / career.battles, + }, + { + title: 'Battles', + current: tankStats.battles, + career: career.battles, + }, + ]} /> ); }), diff --git a/src/types/accountInfo.ts b/src/types/accountInfo.ts index f8812b788..bcb90e861 100644 --- a/src/types/accountInfo.ts +++ b/src/types/accountInfo.ts @@ -48,14 +48,16 @@ export interface ClanStats { export interface AccountInfo { [accountId: number]: { - clan: ClanStats; - all: AllStats; - frags: null; + account_id: number; + created_at: number; + updated_at: number; + private: null; + last_battle_time: number; + nickname: string; + statistics: { + all: AllStats; + clan: ClanStats; + frags: null | number; + }; }; - account_id: number; - created_at: number; - updated_at: number; - private: null; - last_battle_time: number; - nickname: string; }