feat: optimize awaitables

This commit is contained in:
tresabhi committed 2024-11-29 13:20:27 -06:00
1 parent 80fca2e53a
commit 74e85f82f1
54 files changed
+259 -190

No files matched your search

@@ -1,11 +1,4 @@
import {
createDefaultSkills,
fetchEquipmentDefinitions,
fetchModelDefinitions,
fetchProvisionDefinitions,
fetchSkillDefinitions,
fetchTankDefinitions,
} from '@blitzkit/core';
import { createDefaultSkills } from '@blitzkit/core';
import { PlusIcon } from '@radix-ui/react-icons';
import { Flex, Heading, Text } from '@radix-ui/themes';
import { useEffect, useMemo, useState } from 'react';
@@ -13,6 +6,11 @@ import { CompareTable } from '../../../components/Compare/CompareTable';
import { Controls } from '../../../components/Compare/Controls';
import { DamageWarning } from '../../../components/DamageWarning';
import { PageWrapper } from '../../../components/PageWrapper';
import { awaitableEquipmentDefinitions } from '../../../core/awaitables/equipmentDefinitions';
import { awaitableModelDefinitions } from '../../../core/awaitables/modelDefinitions';
import { awaitableProvisionDefinitions } from '../../../core/awaitables/provisionDefinitions';
import { awaitableSkillDefinitions } from '../../../core/awaitables/skillDefinitions';
import { awaitableTankDefinitions } from '../../../core/awaitables/tankDefinitions';
import { tankCharacteristics } from '../../../core/blitzkit/tankCharacteristics';
import { tankToCompareMember } from '../../../core/blitzkit/tankToCompareMember';
import { App } from '../../../stores/app';
@@ -20,11 +18,19 @@ import { CompareEphemeral } from '../../../stores/compareEphemeral';
import { ComparePersistent } from '../../../stores/comparePersistent';
import { TankopediaPersistent } from '../../../stores/tankopediaPersistent';
const modelDefinitions = await fetchModelDefinitions();
const equipmentDefinitions = await fetchEquipmentDefinitions();
const provisionDefinitions = await fetchProvisionDefinitions();
const skillDefinitions = await fetchSkillDefinitions();
const tankDefinitions = await fetchTankDefinitions();
const [
modelDefinitions,
equipmentDefinitions,
provisionDefinitions,
skillDefinitions,
tankDefinitions,
] = await Promise.all([
awaitableModelDefinitions,
awaitableEquipmentDefinitions,
awaitableProvisionDefinitions,
awaitableSkillDefinitions,
awaitableTankDefinitions,
]);
export function Page() {
return (
@@ -2,8 +2,6 @@ import {
compositeStats,
compositeStatsKeys,
deltaTankStats,
fetchAverageDefinitions,
fetchTankDefinitions,
formatCompositeStat,
getAccountInfo,
getTankStats,
@@ -39,10 +37,14 @@ import { PageWrapper } from '../../../components/PageWrapper';
import { StickyRowHeaderCell } from '../../../components/StickyRowHeaderCell';
import { StickyTableRoot } from '../../../components/StickyTableRoot';
import { TankRowHeaderCell } from '../../../components/TankRowHeaderCell';
import { awaitableAverageDefinitions } from '../../../core/awaitables/averageDefinitions';
import { awaitableTankDefinitions } from '../../../core/awaitables/tankDefinitions';
import { Session, type SessionTracking } from '../../../stores/session';
const tankDefinitions = await fetchTankDefinitions();
const tankAverages = await fetchAverageDefinitions();
const [tankDefinitions, averageDefinitions] = await Promise.all([
awaitableTankDefinitions,
awaitableAverageDefinitions,
]);
export function Page() {
return (
@@ -85,7 +87,7 @@ function Content() {
.sort((a, b) => b.last_battle_time - a.last_battle_time)
.map((entry) => {
const tank = tankDefinitions.tanks[entry.tank_id];
const average = tankAverages.averages[tank.id];
const average = averageDefinitions.averages[tank.id];
const composite = compositeStats(
{ ...entry.all, battle_life_time: entry.battle_life_time },
average?.mu,
@@ -1,8 +1,3 @@
import {
fetchModelDefinitions,
fetchProvisionDefinitions,
fetchTankDefinitions,
} from '@blitzkit/core';
import { PageWrapper } from '../../../../components/PageWrapper';
import { CalloutsSection } from '../../../../components/Tankopedia/CalloutsSection';
import { CharacteristicsSection } from '../../../../components/Tankopedia/CharacteristicsSection';
@@ -12,6 +7,9 @@ import { HistorySection } from '../../../../components/Tankopedia/HistorySection
import { MetaSection } from '../../../../components/Tankopedia/MetaSection';
import { TechTreeSection } from '../../../../components/Tankopedia/TechTreeSection';
import { VideoSection } from '../../../../components/Tankopedia/VideoSection';
import { awaitableModelDefinitions } from '../../../../core/awaitables/modelDefinitions';
import { awaitableProvisionDefinitions } from '../../../../core/awaitables/provisionDefinitions';
import { awaitableTankDefinitions } from '../../../../core/awaitables/tankDefinitions';
import { App } from '../../../../stores/app';
import { Duel } from '../../../../stores/duel';
import { TankopediaEphemeral } from '../../../../stores/tankopediaEphemeral';
@@ -22,9 +20,12 @@ type PageProps = MaybeSkeletonComponentProps & {
id: number;
};
const tankDefinitions = await fetchTankDefinitions();
const provisionDefinitions = await fetchProvisionDefinitions();
const modelDefinitions = await fetchModelDefinitions();
const [tankDefinitions, provisionDefinitions, modelDefinitions] =
await Promise.all([
awaitableTankDefinitions,
awaitableProvisionDefinitions,
awaitableModelDefinitions,
]);
export function Page({ id, skeleton }: PageProps) {
const tank = tankDefinitions.tanks[id];