fix: more imports 2

This commit is contained in:
TrèsAbhi committed 2024-09-08 10:15:42 -05:00
1 parent 4f24db0956
commit c51ddbc725
49 files changed
+138 -123

No files matched your search

@@ -3,7 +3,7 @@ import { Table } from '@radix-ui/themes';
import Markdown from 'markdown-to-jsx';
import { use } from 'react';
import { Link } from '../../../../components/Link';
import PageWrapper from '../../../../components/PageWrapper';
import { PageWrapper } from '../../../../components/PageWrapper';
export default function Page({
params,
+1 -1
View File
@@ -4,7 +4,7 @@ import { DiscordLogoIcon, HomeIcon } from '@radix-ui/react-icons';
import { Button, Flex, Heading, Text } from '@radix-ui/themes';
import Link from 'next/link';
import { redirect, usePathname } from 'next/navigation';
import PageWrapper from '../components/PageWrapper';
import { PageWrapper } from '../components/PageWrapper';
const redirects = new Map([
['/tools/ratings', '/tools/rating'],
+1 -1
View File
@@ -1,7 +1,7 @@
'use client';
import { Flex, Heading, Switch, Text } from '@radix-ui/themes';
import PageWrapper from '../../components/PageWrapper';
import { PageWrapper } from '../../components/PageWrapper';
import * as App from '../../stores/app';
export default function Page() {
@@ -2,7 +2,7 @@
import { Code, Heading } from '@radix-ui/themes';
import { useMemo } from 'react';
import PageWrapper from '../../../../../components/PageWrapper';
import { PageWrapper } from '../../../../../components/PageWrapper';
import * as EmbedState from '../../../../../stores/embedState';
import { configurations } from '../../configurations';
import { extractEmbedConfigDefaults } from '../../utilities';
@@ -1,7 +1,10 @@
'use client';
import {
AccountList,
AccountListItem,
FIRST_MINIMAL_ARCHIVED_RATING_SEASON,
getArchivedLatestSeasonNumber,
LEAGUES,
RatingInfo,
RatingPlayer,
@@ -11,8 +14,10 @@ import {
Var,
} from '@blitzkit/core';
import { fetchBlitz } from '@blitzkit/core/src/blitz/fetchBlitz';
import { getArchivedLatestSeasonNumber } from '@blitzkit/core/src/blitz/getArchivedLatestSeasonNumber';
import { getClanAccountInfo } from '@blitzkit/core/src/blitz/getClanAccountInfo';
import { getRatingInfo } from '@blitzkit/core/src/blitz/getRatingInfo';
import { getRatingLeague } from '@blitzkit/core/src/blitz/getRatingLeague';
import { getRatingNeighbors } from '@blitzkit/core/src/blitz/getRatingNeighbors';
import { getArchivedRatingInfo } from '@blitzkit/core/src/blitzkit/getArchivedRatingInfo';
import { getArchivedRatingLeaderboard } from '@blitzkit/core/src/blitzkit/getArchivedRatingLeaderboard';
import { blackA, orangeDark } from '@radix-ui/colors';
@@ -32,14 +37,7 @@ import { debounce, range } from 'lodash';
import { ChangeEvent, useEffect, useRef, useState } from 'react';
import { create } from 'zustand';
import { PageWrapper } from '../../../components/PageWrapper';
import { getClanAccountInfo } from '../../../core/blitz/getClanAccountInfo';
import { getRatingLeague } from '../../../core/blitz/getRatingLeague';
import { getRatingNeighbors } from '../../../core/blitz/getRatingNeighbors';
import { searchCurrentRatingPlayers } from '../../../core/blitz/searchCurrentRatingPlayers';
import {
AccountList,
AccountListItem,
} from '../../../core/blitz/searchPlayersAcrossRegions';
import { PageTurner } from './components/PageTurner';
const ROWS_PER_PAGE = Math.floor(100 / 3);
+16 -18
View File
@@ -1,13 +1,28 @@
'use client';
import {
AccountListWithServer,
IndividualTankStats,
UNLOCALIZED_REGION_NAMES_SHORT,
blitzStarsTankAverages,
deltaTankStats,
idToRegion,
searchPlayersAcrossRegions,
tankDefinitions,
} from '@blitzkit/core';
import {
STAT_KEYS,
STAT_NAMES,
Stat,
generateStats,
prettifyStats,
sumBlitzStarsStats,
} from '@blitzkit/core/src/blitz/generateStats';
import {
IndividualAccountInfo,
getAccountInfo,
} from '@blitzkit/core/src/blitz/getAccountInfo';
import { getTankStats } from '@blitzkit/core/src/blitz/getTankStats';
import {
ArrowDownIcon,
MagnifyingGlassIcon,
@@ -30,23 +45,6 @@ import { debounce } from 'lodash';
import { use, useEffect, useMemo, useRef, useState } from 'react';
import { PageWrapper } from '../../../components/PageWrapper';
import { TankRowHeaderCell } from '../../../components/TankRowHeaderCell';
import {
STAT_KEYS,
STAT_NAMES,
Stat,
generateStats,
prettifyStats,
sumStats,
} from '../../../core/blitz/generateStats';
import {
IndividualAccountInfo,
getAccountInfo,
} from '../../../core/blitz/getAccountInfo';
import { getTankStats } from '../../../core/blitz/getTankStats';
import {
AccountListWithServer,
searchPlayersAcrossRegions,
} from '../../../core/blitz/searchPlayersAcrossRegions';
import * as Session from '../../../stores/session';
export default function Page({
@@ -103,7 +101,7 @@ export default function Page({
const total = useMemo(
() =>
delta
? prettifyStats(sumStats(delta.map(({ stats }) => stats)))
? prettifyStats(sumBlitzStarsStats(delta.map(({ stats }) => stats)))
: undefined,
[delta],
);
@@ -1,7 +1,7 @@
import { idToRegion } from '@blitzkit/core';
import { getAccountInfo } from '@blitzkit/core/src/blitz/getAccountInfo';
import { Text } from '@radix-ui/themes';
import { use, useMemo } from 'react';
import { getAccountInfo } from '../../../core/blitz/getAccountInfo';
import * as App from '../../../stores/app';
export function WargamingAccountName() {
@@ -1,57 +0,0 @@
import { BlitzStats, calculateWN8 } from '@blitzkit/core';
export type Stat = keyof ReturnType<typeof generateStats>;
export const STAT_NAMES: Record<Stat, string> = {
battles: 'Battles',
winrate: 'Winrate',
wn8: 'WN8',
averageDamage: 'Damage',
damage: 'Accumulated damage',
wins: 'Wins',
};
export const STAT_KEYS = Object.keys(STAT_NAMES) as Stat[];
export function generateStats(s: BlitzStats, e?: BlitzStats) {
return {
battles: s.battles,
wins: s.wins,
winrate: s.wins / s.battles,
wn8: e ? calculateWN8(e, s) : null,
damage: s.damage_dealt,
averageDamage: s.damage_dealt / s.battles,
};
}
export function prettifyStats(s: ReturnType<typeof generateStats>) {
return {
battles: `${s.battles}`,
wins: `${s.wins}`,
winrate: `${(s.winrate * 100).toFixed(0)}%`,
wn8: s.wn8 ? s.wn8.toFixed(0) : '--',
damage: `${s.damage}`,
averageDamage: s.averageDamage.toFixed(0),
} satisfies Record<Stat, string>;
}
export function sumStats(s: ReturnType<typeof generateStats>[]) {
function sum(slice: (stat: ReturnType<typeof generateStats>) => number) {
return s.reduce((a, b) => a + slice(b), 0);
}
const battles = sum((s) => s.battles);
const wins = sum((s) => s.wins);
const damage = sum((s) => s.damage);
return {
battles,
wins,
winrate: wins / battles,
damage,
averageDamage: damage / battles,
wn8:
sum((s) => (s.wn8 ? s.wn8 * s.battles : 0)) /
sum((s) => (s.wn8 ? s.battles : 0)),
} satisfies ReturnType<typeof generateStats>;
}
@@ -1,35 +0,0 @@
import { Region } from '@blitzkit/core';
import { fetchBlitz } from '@blitzkit/core/src/blitz/fetchBlitz';
import { normalizeIds } from './normalizeIds';
interface IndividualAccountAchievements {
achievements: {
[achievement: string]: number;
};
max_series: {
[achievement: string]: number;
};
}
export interface AccountAchievements {
[id: number]: IndividualAccountAchievements;
}
export async function getAccountAchievements<
Ids extends number | number[],
ReturnType = Ids extends number
? IndividualAccountAchievements
: IndividualAccountAchievements[],
>(region: Region, ids: Ids) {
const object = await fetchBlitz<AccountAchievements>(
region,
'account/achievements',
{ account_id: normalizeIds(ids) },
);
if (typeof ids === 'number') {
return object[ids as number] as ReturnType;
} else {
return ids.map((id) => object[id]) as ReturnType;
}
}
@@ -1,98 +0,0 @@
import { BlitzStats, Region } from '@blitzkit/core';
import {
FetchBlitzParams,
fetchBlitz,
} from '@blitzkit/core/src/blitz/fetchBlitz';
import { normalizeIds } from './normalizeIds';
export interface SupplementaryStats {
WN8?: number;
tier?: number;
}
export interface ClanStats {
spotted: number;
max_frags_tank_id: number;
hits: number;
frags: number;
max_xp: number;
max_xp_tank_id: number;
wins: number;
losses: number;
capture_points: number;
battles: number;
damage_dealt: number;
damage_received: number;
max_frags: number;
shots: number;
frags8p: number;
xp: number;
win_and_survived: number;
survived_battles: number;
dropped_capture_points: number;
}
export interface RatingStats {
spotted: number;
calibration_battles_left: number;
hits: number;
frags: number;
recalibration_start_time: number;
mm_rating: number;
wins: number;
losses: number;
is_recalibration: boolean;
capture_points: number;
battles: number;
damage_dealt: number;
damage_received: number;
shots: number;
frags8p: number;
xp: number;
win_and_survived: number;
survived_battles: number;
dropped_capture_points: number;
}
export interface IndividualAccountInfo {
account_id: number;
created_at: number;
updated_at: number;
private: null;
last_battle_time: number;
nickname: string;
statistics: {
all: BlitzStats;
clan: ClanStats;
rating?: RatingStats;
frags: null | number;
};
}
export interface AccountInfo {
[accountId: number]: IndividualAccountInfo;
}
export async function getAccountInfo<
Ids extends number | number[],
ReturnType = Ids extends number
? IndividualAccountInfo
: IndividualAccountInfo[],
>(
region: Region,
ids: Ids,
extra: string[] = [],
params: FetchBlitzParams = {},
) {
const object = await fetchBlitz<AccountInfo>(region, 'account/info', {
account_id: normalizeIds(ids),
extra: extra.length === 0 ? undefined : extra.join(','),
...params,
});
if (typeof ids === 'number') {
return object[ids as number] as ReturnType;
} else {
return ids.map((id) => object[id]) as ReturnType;
}
}
@@ -1,46 +0,0 @@
import { Region } from '@blitzkit/core';
import { fetchBlitz } from '@blitzkit/core/src/blitz/fetchBlitz';
import { normalizeIds } from './normalizeIds';
type IndividualClanAccountInfo = {
account_id: number;
joined_at: number;
clan_id: number;
role: string;
account_name: string;
clan?: {
members_count: number;
name: string;
created_at: number;
tag: string;
clan_id: number;
emblem_set_id: number;
};
} | null;
interface ClanAccountInfo {
[accountId: number]: IndividualClanAccountInfo;
}
export async function getClanAccountInfo<
Ids extends number | number[],
ReturnType = Ids extends number
? IndividualClanAccountInfo
: IndividualClanAccountInfo[],
>(region: Region, ids: Ids, extra: string[] = []) {
const object = await fetchBlitz<ClanAccountInfo>(
region,
'clans/accountinfo',
{
account_id: normalizeIds(ids),
extra: extra.length === 0 ? undefined : extra.join(','),
},
);
if (typeof ids === 'number') {
return object[ids as number] as ReturnType;
} else {
return ids.map((id) => object[id]) as ReturnType;
}
}
@@ -1,51 +0,0 @@
import { Region } from '@blitzkit/core';
import { fetchBlitz } from '@blitzkit/core/src/blitz/fetchBlitz';
import { normalizeIds } from './normalizeIds';
interface IndividualClanInfo {
recruiting_options: {
vehicles_level: number;
wins_ratio: number;
average_battles_per_day: number;
battles: number;
average_damage: number;
};
members_count: number;
name: string;
creator_name: string;
clan_id: number;
created_at: number;
updated_at: number;
leader_name: string;
members_ids: number[];
recruiting_policy: string;
tag: string;
is_clan_disbanded: boolean;
old_name: string;
emblem_set_id: number;
creator_id: number;
motto: string;
renamed_at: number;
old_tag: null;
leader_id: number;
description: string;
}
interface ClanInfo {
[clanId: number]: IndividualClanInfo;
}
export async function getClanInfo<
Ids extends number | number[],
ReturnType = Ids extends number ? IndividualClanInfo : IndividualClanInfo[],
>(region: Region, ids: Ids) {
const object = await fetchBlitz<ClanInfo>(region, 'clans/info', {
clan_id: normalizeIds(ids),
});
if (typeof ids === 'number') {
return object[ids as number] as ReturnType;
} else {
return ids.map((id) => object[id]) as ReturnType;
}
}
@@ -1,27 +0,0 @@
import { LeagueTop, RatingPlayer, Region } from '@blitzkit/core';
import { context } from '../blitzkit/context';
import { patientFetch } from '../blitzkit/patientFetch';
import { regionToRegionSubdomain } from './regionToRegionSubdomain';
export async function getRatingLeague(
region: Region,
league: number,
usePatientFetcher = false,
) {
const fetcher = (url: string) =>
usePatientFetcher
? patientFetch(url, undefined, { cache: 'no-store' })
: fetch(url, { cache: 'no-store' });
const response = await fetcher(
context === 'website'
? `/api/${region}/rating/current/league/${league}`
: `https://${regionToRegionSubdomain(
region,
)}.wotblitz.com/en/api/rating-leaderboards/league/${league}/top/`,
);
const json = await response.json();
return context === 'website'
? (json as RatingPlayer[])
: (json as LeagueTop).result;
}
@@ -1,26 +0,0 @@
import { RatingNeighbors, Region } from '@blitzkit/core';
import { patientFetch } from '../blitzkit/patientFetch';
import { withCORSProxy } from '../blitzkit/withCORSProxy';
import { regionToRegionSubdomain } from './regionToRegionSubdomain';
export async function getRatingNeighbors(
region: Region,
id: number,
count: number,
usePatientFetcher = false,
) {
const fetcher = (url: string) =>
usePatientFetcher
? patientFetch(url, undefined, { cache: 'no-store' })
: fetch(url, { cache: 'no-store' });
const response = await fetcher(
withCORSProxy(
`https://${regionToRegionSubdomain(
region,
)}.wotblitz.com/en/api/rating-leaderboards/user/${id}/?neighbors=${count}`,
),
);
const json = (await response.json()) as RatingNeighbors;
return json;
}
@@ -1,18 +0,0 @@
import { Region, TanksStats } from '@blitzkit/core';
import {
fetchBlitz,
FetchBlitzParams,
} from '@blitzkit/core/src/blitz/fetchBlitz';
export async function getTankStats(
region: Region,
id: number,
params?: FetchBlitzParams,
) {
const tankStats = await fetchBlitz<TanksStats>(region, 'tanks/stats', {
account_id: id,
...params,
});
return tankStats[id];
}
+1 -1
View File
@@ -5,10 +5,10 @@ import {
Region,
createNextSafeStore,
} from '@blitzkit/core';
import { Stat } from '@blitzkit/core/src/blitz/generateStats';
import { merge } from 'lodash';
import { create } from 'zustand';
import { persist } from 'zustand/middleware';
import { Stat } from '../core/blitz/generateStats';
interface SessionBase {
columns: Stat[];