From e835498e59881938ef8f73a85179f8d7cea7df98 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tr=C3=A8sAbhi?= <43380238+tresabhi@users.noreply.github.com> Date: Sat, 27 Jan 2024 17:36:29 -0600 Subject: [PATCH] feat: no flags --- src/app/embeds/session/page.tsx | 8 +--- .../tankopedia/[id]/components/Title.tsx | 37 ++++++++++++++++--- .../TankSearch/components/Options/index.tsx | 3 +- src/commands/ownedTanks.tsx | 5 +-- src/components/Breakdown/components/Row.tsx | 10 ++--- src/components/Tanks/components/Item.tsx | 28 ++++++-------- src/core/blitz/getTreeType.ts | 10 ++--- src/core/blitzkrieg/tankDefinitions.ts | 4 +- src/core/discord/addFilterOptions.ts | 8 ++-- src/core/discord/getFiltersFromButton.ts | 5 +-- src/core/discord/getFiltersFromCommand.ts | 7 ++-- src/core/statistics/filterStats.ts | 4 +- src/stores/tankopedia.ts | 4 +- 13 files changed, 72 insertions(+), 61 deletions(-) diff --git a/src/app/embeds/session/page.tsx b/src/app/embeds/session/page.tsx index 1c51c0610..23df7b3af 100644 --- a/src/app/embeds/session/page.tsx +++ b/src/app/embeds/session/page.tsx @@ -3,7 +3,6 @@ import { ContextMenu } from '@radix-ui/themes'; import { useEffect, useState } from 'react'; import * as Breakdown from '../../../components/Breakdown'; -import { TreeTypeEnum } from '../../../components/Tanks'; import { WARGAMING_APPLICATION_ID } from '../../../constants/wargamingApplicationID'; import fetchBlitz from '../../../core/blitz/fetchBlitz'; import { @@ -296,12 +295,7 @@ export default function SessionPage() { } type="tank" tankType={tankDefinitions?.type} - treeType={(() => { - if (tankDefinitions?.tree_type === 'collector') - return TreeTypeEnum.Collector; - if (tankDefinitions?.tree_type === 'premium') - return TreeTypeEnum.Premium; - })()} + treeType={tankDefinitions?.tree_type} stats={session.customColumns.map((customColumn) => { const rowStat = rowStats[customColumn.display]; diff --git a/src/app/tools/tankopedia/[id]/components/Title.tsx b/src/app/tools/tankopedia/[id]/components/Title.tsx index f3a6443b3..ea623fe97 100644 --- a/src/app/tools/tankopedia/[id]/components/Title.tsx +++ b/src/app/tools/tankopedia/[id]/components/Title.tsx @@ -1,16 +1,43 @@ -import { Flex, Heading } from '@radix-ui/themes'; -import { Flag } from '../../../../../components/Flag'; +import { UpdateIcon } from '@radix-ui/react-icons'; +import { Button, Flex, Heading } from '@radix-ui/themes'; +import { TREE_TYPE_ICONS } from '../../../../../components/Tanks'; import { useDuel } from '../../../../../stores/duel'; export function Title() { const protagonist = useDuel((state) => state.protagonist!); return ( - + - - {protagonist.tank.name} + + + {' '} + {protagonist.tank.name} + + + + ); } diff --git a/src/app/tools/tankopedia/components/TankSearch/components/Options/index.tsx b/src/app/tools/tankopedia/components/TankSearch/components/Options/index.tsx index ac339ed3e..211f7d44c 100644 --- a/src/app/tools/tankopedia/components/TankSearch/components/Options/index.tsx +++ b/src/app/tools/tankopedia/components/TankSearch/components/Options/index.tsx @@ -9,7 +9,6 @@ import { TREE_TYPES, TREE_TYPE_ICONS, TREE_TYPE_IMAGES, - TreeTypeEnum, } from '../../../../../../../components/Tanks'; import { NATIONS, @@ -136,7 +135,7 @@ export function Options() { } > diff --git a/src/commands/ownedTanks.tsx b/src/commands/ownedTanks.tsx index 4a93fdfb1..9ed7e5287 100644 --- a/src/commands/ownedTanks.tsx +++ b/src/commands/ownedTanks.tsx @@ -7,7 +7,6 @@ import { encyclopediaInfo } from '../core/blitz/encyclopediaInfo'; import { getAccountInfo } from '../core/blitz/getAccountInfo'; import { getClanAccountInfo } from '../core/blitz/getClanAccountInfo'; import getTankStats from '../core/blitz/getTankStats'; -import getTreeType from '../core/blitz/getTreeType'; import { emblemIdToURL } from '../core/blitzkrieg/emblemIdToURL'; import { TIER_ROMAN_NUMERALS, @@ -98,7 +97,7 @@ export const ownedTanksCommand: CommandRegistry = { name={tank.name} tankType={tank.type} image={tankIcon(tank.id)} - treeType={await getTreeType(tank.id)} + treeType={tank.tree_type} /> )), )} @@ -111,7 +110,7 @@ export const ownedTanksCommand: CommandRegistry = { name={tank.name} tankType={tank.type} image={tankIcon(tank.id)} - treeType={await getTreeType(tank.id)} + treeType={tank.tree_type} /> )), )} diff --git a/src/components/Breakdown/components/Row.tsx b/src/components/Breakdown/components/Row.tsx index 13da1e0f2..869fe5875 100644 --- a/src/components/Breakdown/components/Row.tsx +++ b/src/components/Breakdown/components/Row.tsx @@ -5,7 +5,7 @@ import { GrayColor, PALETTES, } from '../../../constants/radixColors'; -import { TREE_TYPE_ICONS, TankType, TreeTypeEnum } from '../../Tanks'; +import { TREE_TYPE_ICONS, TankType, TreeType } from '../../Tanks'; import { RowStat } from './RowStat'; export interface RowStatItem { @@ -20,7 +20,7 @@ interface RowProps { type?: 'tank' | 'summary'; title: string; minimized?: boolean; - treeType?: TreeTypeEnum; + treeType?: TreeType; tankType?: TankType; color?: AccentColor | GrayColor; stats: (RowStatItem | undefined)[]; @@ -60,7 +60,7 @@ export function Row({ > {type === 'tank' && tankType !== undefined && ( )} @@ -69,9 +69,9 @@ export function Row({ style={{ color: type === 'tank' - ? treeType === TreeTypeEnum.Collector + ? treeType === 'collector' ? theme.textLowContrast_blue - : treeType === TreeTypeEnum.Premium + : treeType === 'premium' ? theme.textLowContrast_amber : theme.textHighContrast : theme.textLowContrast, diff --git a/src/components/Tanks/components/Item.tsx b/src/components/Tanks/components/Item.tsx index 67193f81a..b090d0094 100644 --- a/src/components/Tanks/components/Item.tsx +++ b/src/components/Tanks/components/Item.tsx @@ -5,12 +5,6 @@ import { } from '../../../core/blitzkrieg/tankDefinitions'; import { theme } from '../../../stitches.config'; -export enum TreeTypeEnum { - TechTree, - Premium, - Collector, -} - export const TANK_TYPES = [ 'tank_destroyer', 'light', @@ -22,15 +16,15 @@ export const TANK_TYPES = [ export const TREE_TYPES = ['researchable', 'premium', 'collector'] as const; export type TankType = (typeof TANK_TYPES)[number]; -export type TreeTypeString = (typeof TREE_TYPES)[number]; +export type TreeType = (typeof TREE_TYPES)[number]; -export const TREE_TYPE_NAMES: Record = { +export const TREE_TYPE_NAMES: Record = { researchable: 'Tech tree', premium: 'Premium', collector: 'Collector', }; -export const TREE_TYPE_IMAGES: Record = { +export const TREE_TYPE_IMAGES: Record = { researchable: 'https://i.imgur.com/pJxO2XY.png', premium: 'https://i.imgur.com/mZzSwOU.png', collector: 'https://i.imgur.com/7A0RsG5.png', @@ -40,19 +34,19 @@ export interface ItemProps { image?: string; tankType?: TankType; name: string; - treeType: TreeTypeEnum; + treeType: TreeType; } const TREE_TYPE_COLOR = { - [TreeTypeEnum.TechTree]: '', - [TreeTypeEnum.Premium]: '_amber', - [TreeTypeEnum.Collector]: '_blue', + researchable: '', + premium: '_amber', + collector: '_blue', } as const; -export const TREE_TYPE_ICONS = { - [TreeTypeEnum.TechTree]: TANK_ICONS, - [TreeTypeEnum.Premium]: TANK_ICONS_PREMIUM, - [TreeTypeEnum.Collector]: TANK_ICONS_COLLECTOR, +export const TREE_TYPE_ICONS: Record> = { + researchable: TANK_ICONS, + premium: TANK_ICONS_PREMIUM, + collector: TANK_ICONS_COLLECTOR, }; export function Item({ image, tankType, name, treeType }: ItemProps) { diff --git a/src/core/blitz/getTreeType.ts b/src/core/blitz/getTreeType.ts index cdc6c5bd9..c0da72bc1 100644 --- a/src/core/blitz/getTreeType.ts +++ b/src/core/blitz/getTreeType.ts @@ -1,11 +1,11 @@ -import { TreeTypeEnum } from '../../components/Tanks'; +import { TreeType } from '../../components/Tanks'; import { tankDefinitions } from '../blitzkrieg/tankDefinitions'; -export default async function getTreeType(id: number) { +export default async function getTreeType(id: number): Promise { const entry = (await tankDefinitions)[id]; - if (entry.tree_type === 'collector') return TreeTypeEnum.Collector; - if (entry.tree_type === 'premium') return TreeTypeEnum.Premium; + if (entry.tree_type === 'collector') return 'collector'; + if (entry.tree_type === 'premium') return 'premium'; - return TreeTypeEnum.TechTree; + return 'researchable'; } diff --git a/src/core/blitzkrieg/tankDefinitions.ts b/src/core/blitzkrieg/tankDefinitions.ts index 0a10dee47..9c400de1f 100644 --- a/src/core/blitzkrieg/tankDefinitions.ts +++ b/src/core/blitzkrieg/tankDefinitions.ts @@ -1,6 +1,6 @@ import { deburr } from 'lodash'; import { Vector2Tuple } from 'three'; -import { TankType, TreeTypeString } from '../../components/Tanks'; +import { TankType, TreeType } from '../../components/Tanks'; import { asset } from './asset'; export type ShellType = 'ap' | 'ap_cr' | 'hc' | 'he'; @@ -18,7 +18,7 @@ export interface TankDefinition { nation: string; name: string; name_full?: string; - tree_type: TreeTypeString; + tree_type: TreeType; consumables: number; provisions: number; tier: Tier; diff --git a/src/core/discord/addFilterOptions.ts b/src/core/discord/addFilterOptions.ts index 2c45a612d..683bd7bd2 100644 --- a/src/core/discord/addFilterOptions.ts +++ b/src/core/discord/addFilterOptions.ts @@ -3,7 +3,7 @@ import { SlashCommandSubcommandBuilder, SlashCommandSubcommandGroupBuilder, } from 'discord.js'; -import { TREE_TYPE_NAMES, TreeTypeString } from '../../components/Tanks'; +import { TREE_TYPE_NAMES, TreeType } from '../../components/Tanks'; import { encyclopediaInfo } from '../blitz/encyclopediaInfo'; import addPeriodSubCommands from './addPeriodSubCommands'; import addTankChoices from './addTankChoices'; @@ -56,15 +56,15 @@ export default async function addFilterOptions< .addChoices( { name: TREE_TYPE_NAMES['researchable'], - value: 'researchable' satisfies TreeTypeString, + value: 'researchable' satisfies TreeType, }, { name: TREE_TYPE_NAMES.premium, - value: 'premium' satisfies TreeTypeString, + value: 'premium' satisfies TreeType, }, { name: TREE_TYPE_NAMES.collector, - value: 'collector' satisfies TreeTypeString, + value: 'collector' satisfies TreeType, }, ) .setRequired(false), diff --git a/src/core/discord/getFiltersFromButton.ts b/src/core/discord/getFiltersFromButton.ts index 3d906e35b..f1b24829e 100644 --- a/src/core/discord/getFiltersFromButton.ts +++ b/src/core/discord/getFiltersFromButton.ts @@ -1,5 +1,5 @@ import { ButtonInteraction } from 'discord.js'; -import { TreeTypeString } from '../../components/Tanks'; +import { TreeType } from '../../components/Tanks'; import { StatFilters } from '../statistics/filterStats'; export function getFiltersFromButton(interaction: ButtonInteraction) { @@ -10,8 +10,7 @@ export function getFiltersFromButton(interaction: ButtonInteraction) { tank: parseInt(url.searchParams.get('tank') ?? '0') || undefined, tankType: url.searchParams.get('tank-type') ?? undefined, treeType: - (url.searchParams.get('tree-type') as TreeTypeString | undefined) ?? - undefined, + (url.searchParams.get('tree-type') as TreeType | undefined) ?? undefined, tier: parseInt(url.searchParams.get('tier') ?? '0') || undefined, } satisfies StatFilters; } diff --git a/src/core/discord/getFiltersFromCommand.ts b/src/core/discord/getFiltersFromCommand.ts index 3a08f1bad..c958dbc35 100644 --- a/src/core/discord/getFiltersFromCommand.ts +++ b/src/core/discord/getFiltersFromCommand.ts @@ -1,5 +1,5 @@ import { ChatInputCommandInteraction } from 'discord.js'; -import { TreeTypeString } from '../../components/Tanks'; +import { TreeType } from '../../components/Tanks'; import resolveTankId from '../blitz/resolveTankId'; import { StatFilters } from '../statistics/filterStats'; @@ -13,9 +13,8 @@ export async function getFiltersFromCommand( tier: parseInt(interaction.options.getString('tier') ?? '0') || undefined, tankType: interaction.options.getString('tank-type') ?? undefined, treeType: - (interaction.options.getString('tree-type') as - | TreeTypeString - | undefined) ?? undefined, + (interaction.options.getString('tree-type') as TreeType | undefined) ?? + undefined, tank: tankRaw === null ? undefined : await resolveTankId(tankRaw), } satisfies StatFilters; } diff --git a/src/core/statistics/filterStats.ts b/src/core/statistics/filterStats.ts index e56da6af4..cc9c6e2af 100644 --- a/src/core/statistics/filterStats.ts +++ b/src/core/statistics/filterStats.ts @@ -1,4 +1,4 @@ -import { TreeTypeString } from '../../components/Tanks'; +import { TreeType } from '../../components/Tanks'; import { tankDefinitions } from '../blitzkrieg/tankDefinitions'; import { DiffedTankStats } from '../blitzstars/getStatsInPeriod'; import { tankAverages } from '../blitzstars/tankAverages'; @@ -9,7 +9,7 @@ export interface StatFilters { nation?: string; tier?: number; tankType?: string; - treeType?: TreeTypeString; + treeType?: TreeType; tank?: number; } diff --git a/src/stores/tankopedia.ts b/src/stores/tankopedia.ts index 1273ecfa6..151ddb077 100644 --- a/src/stores/tankopedia.ts +++ b/src/stores/tankopedia.ts @@ -1,7 +1,7 @@ import { produce } from 'immer'; import { create } from 'zustand'; import { persist, subscribeWithSelector } from 'zustand/middleware'; -import { TankType, TreeTypeString } from '../components/Tanks'; +import { TankType, TreeType } from '../components/Tanks'; import { GunDefinition, ShellDefinition, @@ -39,7 +39,7 @@ interface TankopediaPersistent { filters: { tiers: Tier[]; types: TankType[]; - treeTypes: TreeTypeString[]; + treeTypes: TreeType[]; nations: string[]; test: TankopediaTestTankDisplay; page: number;