From 78fc028ee55796baadee4f90722d0774fc5b4162 Mon Sep 17 00:00:00 2001 From: kenneth Date: Sun, 15 Mar 2026 00:20:12 +0000 Subject: [PATCH] fix(tfl): handle near-1km boundary in formatDistance Values like 0.9999km rounded to 1000m and displayed as '1000m away'. Now converts to meters first and switches to km format when rounded meters >= 1000. Co-authored-by: Ona --- packages/aelis-source-tfl/src/renderer.test.tsx | 9 +++++++++ packages/aelis-source-tfl/src/renderer.tsx | 7 ++++--- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/packages/aelis-source-tfl/src/renderer.test.tsx b/packages/aelis-source-tfl/src/renderer.test.tsx index 25896bd..ae3752a 100644 --- a/packages/aelis-source-tfl/src/renderer.test.tsx +++ b/packages/aelis-source-tfl/src/renderer.test.tsx @@ -61,6 +61,15 @@ describe("renderTflAlert", () => { expect(caption.props.content).toBe("Nearest station: 2.5km away") }) + test("formats near-1km boundary as km not meters", () => { + const node = renderTflAlert(makeItem({ closestStationDistance: 0.9999 })) + const spec = render(node) + + const root = spec.elements[spec.root]! + const caption = spec.elements[root.children![2]!]! + expect(caption.props.content).toBe("Nearest station: 1.0km away") + }) + test("omits station distance when null", () => { const node = renderTflAlert(makeItem({ closestStationDistance: null })) const spec = render(node) diff --git a/packages/aelis-source-tfl/src/renderer.tsx b/packages/aelis-source-tfl/src/renderer.tsx index d5cc5a1..e0eb02a 100644 --- a/packages/aelis-source-tfl/src/renderer.tsx +++ b/packages/aelis-source-tfl/src/renderer.tsx @@ -14,10 +14,11 @@ const SEVERITY_LABEL: Record = { } function formatDistance(km: number): string { - if (km < 1) { - return `${Math.round(km * 1000)}m away` + const meters = Math.round(km * 1000) + if (meters < 1000) { + return `${meters}m away` } - return `${km.toFixed(1)}km away` + return `${(meters / 1000).toFixed(1)}km away` } export const renderTflAlert: FeedItemRenderer<"tfl-alert", TflAlertData> = (item) => {