diff --git a/app/api/apks/route.ts b/app/api/apks/route.ts index 10191bc..f062039 100644 --- a/app/api/apks/route.ts +++ b/app/api/apks/route.ts @@ -24,6 +24,7 @@ export async function GET(request: Request) { name: apk.name, size: apk.size, environment: parsed.environment, + rawEnvironment: parsed.rawEnvironment, commit: parsed.commit, modifiedAt: apk.modifiedAt.toISOString(), downloadUrl: `/api/download?project=${encodeURIComponent(project)}&version=${encodeURIComponent(version)}&filename=${encodeURIComponent(apk.name)}`, diff --git a/app/download/ApkList.tsx b/app/download/ApkList.tsx index a86b9b0..8fce428 100644 --- a/app/download/ApkList.tsx +++ b/app/download/ApkList.tsx @@ -10,6 +10,7 @@ const fetcher = (url: string) => fetch(url).then((res) => res.json()); interface Apk { name: string; environment: ApkEnvironment; + rawEnvironment: string; commit: string | null; size: number; modifiedAt: string; diff --git a/app/download/ApkTable.tsx b/app/download/ApkTable.tsx index 84b20de..cf97394 100644 --- a/app/download/ApkTable.tsx +++ b/app/download/ApkTable.tsx @@ -6,6 +6,7 @@ import { type ApkEnvironment } from '@/lib/apk-parser'; interface Apk { name: string; environment: ApkEnvironment; + rawEnvironment: string; commit: string | null; size: number; modifiedAt: string; @@ -28,10 +29,6 @@ function getEnvironmentBadgeClass(env: ApkEnvironment): string { } } -function formatEnvironment(env: ApkEnvironment): string { - return env; -} - export default function ApkTable({ apks }: ApkTableProps) { if (!apks || apks.length === 0) { return ( @@ -69,7 +66,7 @@ export default function ApkTable({ apks }: ApkTableProps) { {apk.commit || '-'} - {formatEnvironment(apk.environment)} + {apk.rawEnvironment} diff --git a/lib/apk-parser.ts b/lib/apk-parser.ts index 66f65bd..621bd56 100644 --- a/lib/apk-parser.ts +++ b/lib/apk-parser.ts @@ -4,6 +4,7 @@ export type ApkEnvironment = 'product' | 'dev' | 'sandbox' | 'other'; export interface ParsedApkMetadata { environment: ApkEnvironment; + rawEnvironment: string; commit: string | null; isValid: boolean; } @@ -12,27 +13,27 @@ export function getApkTabs(): string[] { return APK_TABS; } -export function detectEnvironment(prefix: string, configuredTabs: string[]): ApkEnvironment { +export function detectEnvironment(prefix: string, configuredTabs: string[]): { environment: ApkEnvironment; rawEnvironment: string } { // Empty prefix → other if (!prefix) { - return 'other'; + return { environment: 'other', rawEnvironment: 'other' }; } // No underscore means product (e.g., "ft") if (!prefix.includes('_')) { - return 'product'; + return { environment: 'product', rawEnvironment: 'product' }; } // Extract environment from last segment after underscore const lastUnderscoreIndex = prefix.lastIndexOf('_'); - const env = prefix.substring(lastUnderscoreIndex + 1); + const rawEnv = prefix.substring(lastUnderscoreIndex + 1); // Check if environment is configured - if (configuredTabs.includes(env)) { - return env as ApkEnvironment; + if (configuredTabs.includes(rawEnv)) { + return { environment: rawEnv as ApkEnvironment, rawEnvironment: rawEnv }; } - return 'other'; + return { environment: 'other', rawEnvironment: rawEnv }; } export function parseApkFilename(filename: string, version: string): ParsedApkMetadata { @@ -48,7 +49,7 @@ export function parseApkFilename(filename: string, version: string): ParsedApkMe prefix = ''; } - const environment = detectEnvironment(prefix, APK_TABS); + const { environment, rawEnvironment } = detectEnvironment(prefix, APK_TABS); // Extract commit ID const commitMatch = filename.match(/([a-f0-9]{7,})\.apk$/); @@ -56,6 +57,7 @@ export function parseApkFilename(filename: string, version: string): ParsedApkMe return { environment, + rawEnvironment, commit, isValid: commit !== null, };