diff --git a/packages/closed b/packages/closed index c2175a152..58840ed37 160000 --- a/packages/closed +++ b/packages/closed @@ -1 +1 @@ -Subproject commit c2175a152073e400f4011f7f6b96fe3392cfe3d0 +Subproject commit 58840ed37f5df93398171e96ddeb304111b43c84 diff --git a/packages/website-ue/src/api/abstract.ts b/packages/website-ue/src/api/abstract.ts index 8fda066bc..e8ba5925b 100644 --- a/packages/website-ue/src/api/abstract.ts +++ b/packages/website-ue/src/api/abstract.ts @@ -6,11 +6,11 @@ import type { AvatarList } from "@protos/avatar_list"; import type { Avatars } from "@protos/avatars"; import type { Background } from "@protos/background"; import type { Backgrounds } from "@protos/backgrounds"; -import type { TankUpgradePricePresetComponent } from "@protos/blitz_static_tank_upgrade_price_preset_component"; import type { Equipment } from "@protos/equipment"; import type { PopularTanks } from "@protos/popular_tanks"; import type { Tank } from "@protos/tank"; import type { TankList } from "@protos/tank_list"; +import type { TankUpgradePresets } from "@protos/tank_upgrade_presets"; import type { Tanks } from "@protos/tanks"; import type { Tiers } from "@protos/tiers"; @@ -23,9 +23,7 @@ export abstract class AbstractAPI { abstract tank(id: string): Promise; abstract tanks(): Promise; abstract popularTanks(): Promise; - abstract tankUpgradePreset( - name: string, - ): Promise; + abstract tankUpgradePresets(): Promise; abstract tiers(): Promise; abstract equipment(): Promise; diff --git a/packages/website-ue/src/api/client.ts b/packages/website-ue/src/api/client.ts index 002d82bc9..6cd4ddcea 100644 --- a/packages/website-ue/src/api/client.ts +++ b/packages/website-ue/src/api/client.ts @@ -1,10 +1,10 @@ import { fetchPB } from "@blitzkit/core"; import type { Strings } from "@blitzkit/i18n"; import { Avatars } from "@protos/avatars"; -import { TankUpgradePricePresetComponent } from "@protos/blitz_static_tank_upgrade_price_preset_component"; import { Equipment } from "@protos/equipment"; import { PopularTanks } from "@protos/popular_tanks"; import { TankList } from "@protos/tank_list"; +import { TankUpgradePresets } from "@protos/tank_upgrade_presets"; import { Tanks } from "@protos/tanks"; import { Tiers } from "@protos/tiers"; import { AbstractAPI, Cache } from "./abstract"; @@ -45,11 +45,8 @@ export class ClientAPI extends AbstractAPI { } @Cache() - tankUpgradePreset(name: string) { - return fetchPB( - `/api/tanks/presets/upgrade/${name}.pb`, - TankUpgradePricePresetComponent, - ); + tankUpgradePresets() { + return fetchPB(`/api/tanks/upgrades.pb`, TankUpgradePresets); } @Cache() diff --git a/packages/website-ue/src/api/server.ts b/packages/website-ue/src/api/server.ts index 24328da8f..64e14bcdb 100644 --- a/packages/website-ue/src/api/server.ts +++ b/packages/website-ue/src/api/server.ts @@ -9,6 +9,7 @@ import { Equipment } from "@protos/equipment"; import type { PopularTanks } from "@protos/popular_tanks"; import type { Tank } from "@protos/tank"; import type { TankListEntry } from "@protos/tank_list"; +import { TankUpgradePresets } from "@protos/tank_upgrade_presets"; import type { Tanks } from "@protos/tanks"; import type { Tiers } from "@protos/tiers"; import { existsSync } from "fs"; @@ -95,10 +96,9 @@ export class ServerAPI extends AbstractAPI { if (!name) continue; - const id = item.name; const slug = sluggify(name); - list.push({ id, slug }); + list.push({ id: item.id, slug }); } return { list }; @@ -114,7 +114,7 @@ export class ServerAPI extends AbstractAPI { } const { slug } = tankListEntry; - const item = this.metadata.item(`TankEntity.${id}`); + const item = this.metadata.item(id); const tank = item.TankCatalog(); const compensation = item.Compensation(); @@ -220,9 +220,15 @@ export class ServerAPI extends AbstractAPI { } @Cache() - async tankUpgradePreset(id: string) { - const item = this.metadata.item(`TankUpgradePricePresetEntity.${id}`); - return item.TankUpgradePricePreset(); + async tankUpgradePresets() { + const group = this.metadata.group("TankUpgradePricePresetEntity"); + const presets = TankUpgradePresets.create(); + + for (const item of group) { + presets.presets[item.id] = item.TankUpgradePricePreset(); + } + + return presets; } @Cache() @@ -231,7 +237,7 @@ export class ServerAPI extends AbstractAPI { const tiers: Tiers = { tiers: {} }; for (const item of group) { - tiers.tiers[item.name] = item.TankTier(); + tiers.tiers[item.id] = item.TankTier(); } return tiers; @@ -332,7 +338,7 @@ export class ServerAPI extends AbstractAPI { @Cache() async avatar(id: string) { - const avatar = this.metadata.item(`ProfileAvatarEntity.${id}`); + const avatar = this.metadata.item(id); const name = avatar.name; const stuff_ui = avatar.StuffUI("UIComponent"); const profile_avatar = avatar.ProfileAvatar(); @@ -348,7 +354,7 @@ export class ServerAPI extends AbstractAPI { const avatars: Avatar[] = []; for (const item of this.metadata.group("ProfileAvatarEntity")) { - avatars.push(await this.avatar(item.name)); + avatars.push(await this.avatar(item.id)); } return { avatars }; @@ -364,7 +370,7 @@ export class ServerAPI extends AbstractAPI { @Cache() async background(id: string) { - const background = this.metadata.item(`ProfileBackgroundEntity.${id}`); + const background = this.metadata.item(id); const name = background.name; const stuff_ui = background.StuffUI("UIComponent"); const profile_background = background.ProfileBackground(); diff --git a/packages/website-ue/src/hooks/useTierCompare.ts b/packages/website-ue/src/hooks/useTierCompare.ts index fb5926b2b..3b5c986a0 100644 --- a/packages/website-ue/src/hooks/useTierCompare.ts +++ b/packages/website-ue/src/hooks/useTierCompare.ts @@ -5,11 +5,8 @@ export function useTierCompare() { const tiers = useAwait(() => api.tiers(), "tiers"); function compare(a: string, b: string) { - const [, tierNameA] = a.split("."); - const [, tierNameB] = b.split("."); - const tierA = tiers.tiers[tierNameA]; - const tierB = tiers.tiers[tierNameB]; - + const tierA = tiers.tiers[a]; + const tierB = tiers.tiers[b]; return tierB.carousel_level - tierA.carousel_level; } diff --git a/packages/website-ue/src/hooks/useUpgradePreset.ts b/packages/website-ue/src/hooks/useUpgradePreset.ts index 4732492d6..765ce255f 100644 --- a/packages/website-ue/src/hooks/useUpgradePreset.ts +++ b/packages/website-ue/src/hooks/useUpgradePreset.ts @@ -2,11 +2,10 @@ import { api } from "../api/dynamic"; import { useAwait } from "./useAwait"; export function useUpgradePreset(name: string) { - const [, discriminator] = name.split("."); - const preset = useAwait( - () => api.tankUpgradePreset(discriminator), - `tank-upgrade-preset-${discriminator}`, + const presets = useAwait( + () => api.tankUpgradePresets(), + "tank-upgrade-presets", ); - return preset; + return presets.presets[name]; } diff --git a/packages/website-ue/src/pages/[api]/tanks/presets/upgrade/[id].pb.ts b/packages/website-ue/src/pages/[api]/tanks/presets/upgrade/[id].pb.ts index c7051f22c..d334ef7ac 100644 --- a/packages/website-ue/src/pages/[api]/tanks/presets/upgrade/[id].pb.ts +++ b/packages/website-ue/src/pages/[api]/tanks/presets/upgrade/[id].pb.ts @@ -9,8 +9,3 @@ export const getStaticPaths = mixStaticPaths(_getStaticPaths, async () => { .group("TankUpgradePricePresetEntity") .map(({ name }) => ({ params: { id: name } })); }); - -export async function GET({ params }: APIContext) { - const preset = await api.tankUpgradePreset(params.id); - return new Response(TankUpgradePricePresetComponent.encode(preset).finish()); -} diff --git a/packages/website-ue/src/pages/[api]/tanks/upgrades.pb.ts b/packages/website-ue/src/pages/[api]/tanks/upgrades.pb.ts new file mode 100644 index 000000000..9fc3f2142 --- /dev/null +++ b/packages/website-ue/src/pages/[api]/tanks/upgrades.pb.ts @@ -0,0 +1,9 @@ +import { TankUpgradePresets } from "@protos/tank_upgrade_presets"; +import { api } from "../../../api/dynamic"; + +export { getStaticPaths } from "../_index"; + +export async function GET() { + const preset = await api.tankUpgradePresets(); + return new Response(TankUpgradePresets.encode(preset).finish()); +} diff --git a/packages/website-ue/src/tankopedia/characteristicsOrder.tsx b/packages/website-ue/src/tankopedia/characteristicsOrder.tsx index 298789a9a..5d778f2fe 100644 --- a/packages/website-ue/src/tankopedia/characteristicsOrder.tsx +++ b/packages/website-ue/src/tankopedia/characteristicsOrder.tsx @@ -71,7 +71,7 @@ export const characteristicsOrder: CharacteristicsOrder = [ { name: "tier", render({ output, strings }) { - const [, name] = (output as string).split("."); + const name = output as string; if (name == "vintage") { return ;