From cca46957bc1b7fb177508084873a559627194cbc Mon Sep 17 00:00:00 2001 From: tresabhi <43380238+tresabhi@users.noreply.github.com> Date: Mon, 18 May 2026 16:32:46 -0500 Subject: [PATCH] apply correct media prefixes --- packages/website-ue/src/api/abstract.ts | 2 ++ packages/website-ue/src/api/client.ts | 5 +++++ packages/website-ue/src/api/server.ts | 17 +++++++++++------ .../src/pages/[api]/avatars/[id].webp.ts | 4 +++- 4 files changed, 21 insertions(+), 7 deletions(-) diff --git a/packages/website-ue/src/api/abstract.ts b/packages/website-ue/src/api/abstract.ts index 1d7c4d957..e9805ccf9 100644 --- a/packages/website-ue/src/api/abstract.ts +++ b/packages/website-ue/src/api/abstract.ts @@ -17,6 +17,8 @@ import type { Tiers } from "@protos/tiers"; export abstract class AbstractAPI { abstract metadata: MetadataAccessor; + abstract mediaPrefix(path: string): string; + abstract tankList(): Promise; abstract tank(id: string): Promise; abstract tanks(): Promise; diff --git a/packages/website-ue/src/api/client.ts b/packages/website-ue/src/api/client.ts index 3d088fc18..68353dda8 100644 --- a/packages/website-ue/src/api/client.ts +++ b/packages/website-ue/src/api/client.ts @@ -18,6 +18,11 @@ export class ClientAPI extends AbstractAPI { throw new Error("MetadataAccessor is inaccessible on the client"); } + @UnimplementedOnClient + mediaPrefix(): never { + throw rejected(); + } + @Cache() tankList() { return fetchPB("/api/tanks/list.pb", TankList); diff --git a/packages/website-ue/src/api/server.ts b/packages/website-ue/src/api/server.ts index c183948c1..6367a5f05 100644 --- a/packages/website-ue/src/api/server.ts +++ b/packages/website-ue/src/api/server.ts @@ -36,6 +36,16 @@ export class ServerAPI extends AbstractAPI { super(); } + mediaPrefix(path: string) { + const config = this.resolveClientConfig(); + const metroResources = config.MetroResources(); + const remoteStorage = this.resolveRemoteUrl( + metroResources.remote_storage!.remote_urls, + ); + + return `${remoteStorage.url}/${remoteStorage.relative_path}${path}`; + } + resolveRemoteUrl(remoteUrls: string[]) { let remoteStorage: RemoteStorageComponent | undefined = undefined; @@ -380,12 +390,7 @@ export class ServerAPI extends AbstractAPI { async currencyIcon(id: string) { const item = this.metadata.item(`CurrencyEntity.${id}`); const stuffUI = item.StuffUI("UIComponent"); - const config = this.resolveClientConfig(); - const metroResources = config.MetroResources(); - const remoteStorage = this.resolveRemoteUrl( - metroResources.remote_storage!.remote_urls, - ); - return `${remoteStorage.url}/${remoteStorage.relative_path}${stuffUI.icon!.value}`; + return this.mediaPrefix(stuffUI.icon!.value); } } diff --git a/packages/website-ue/src/pages/[api]/avatars/[id].webp.ts b/packages/website-ue/src/pages/[api]/avatars/[id].webp.ts index d8f5a6fbc..043c3f33e 100644 --- a/packages/website-ue/src/pages/[api]/avatars/[id].webp.ts +++ b/packages/website-ue/src/pages/[api]/avatars/[id].webp.ts @@ -12,5 +12,7 @@ export { getStaticPaths } from "./[id].json"; */ export async function GET({ params }: APIContext) { const avatar = await api.avatar(params.id); - return await imageProxy(avatar.profile_avatar!.avatar); + return await imageProxy( + api.mediaPrefix(avatar.profile_avatar!.avatar!.value), + ); }