From 383d3a36efbc4d9ff6541ef39bda49a565a26b02 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tr=C3=A8sAbhi?= <43380238+tresabhi@users.noreply.github.com> Date: Fri, 28 Nov 2025 14:21:26 -0600 Subject: [PATCH] feat: load tank data --- packages/website-ue/src/core/api/abstract.ts | 3 +++ packages/website-ue/src/core/api/server.ts | 14 ++++++++++- .../src/pages/tanks/[slug]/index.astro | 23 +++++++++++++++++++ 3 files changed, 39 insertions(+), 1 deletion(-) create mode 100644 packages/website-ue/src/pages/tanks/[slug]/index.astro diff --git a/packages/website-ue/src/core/api/abstract.ts b/packages/website-ue/src/core/api/abstract.ts index a6159f219..250eed5bc 100644 --- a/packages/website-ue/src/core/api/abstract.ts +++ b/packages/website-ue/src/core/api/abstract.ts @@ -1,3 +1,4 @@ +import type { TankCatalogComponent } from "@protos/blitz_static_tank_component"; import type { Tanks } from "../../protos/tanks"; export abstract class AbstractAPI { @@ -7,4 +8,6 @@ export abstract class AbstractAPI { locale: string, prefix?: string ): Promise>; + + abstract tank(id: string): Promise; } diff --git a/packages/website-ue/src/core/api/server.ts b/packages/website-ue/src/core/api/server.ts index 5afb8e181..b64eb4d58 100644 --- a/packages/website-ue/src/core/api/server.ts +++ b/packages/website-ue/src/core/api/server.ts @@ -78,7 +78,12 @@ export class ServerAPI extends AbstractAPI { for (const item of group) { const tankCatalog = item.TankCatalog(); - const name = strings[tankCatalog.name!.value]; + + if (!tankCatalog.name) continue; + + const name = strings[tankCatalog.name.value]; + + if (!name) continue; const id = item.name; const slug = sluggify(name); @@ -88,4 +93,11 @@ export class ServerAPI extends AbstractAPI { return { tanks }; } + + async tank(id: string) { + const item = this.metadata.item(`TankEntity.${id}`); + const tankCatalog = item.TankCatalog(); + + return tankCatalog; + } } diff --git a/packages/website-ue/src/pages/tanks/[slug]/index.astro b/packages/website-ue/src/pages/tanks/[slug]/index.astro new file mode 100644 index 000000000..9133de710 --- /dev/null +++ b/packages/website-ue/src/pages/tanks/[slug]/index.astro @@ -0,0 +1,23 @@ +--- +import type { GetStaticPaths } from "astro"; +import { api } from "../../../core/api/dynamic"; + +export const getStaticPaths = (async () => { + const { tanks } = await api.tanks(); + + return tanks.map((tank) => ({ + params: { slug: tank.slug }, + props: { id: tank.id }, + })); +}) satisfies GetStaticPaths; + +const { id } = Astro.props; +--- + +

Tank {id}

+ +
+ +
{JSON.stringify(    await api.tank(id) , null, 2)}
+
+