From e962b053ae44d8255d3cb3f2b66b8b1c9736827d Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Fri, 27 Mar 2026 01:05:20 +0000 Subject: [PATCH] refactor: extract ModelFormatting helper; deduplicate FormatTokenCount/FormatCount MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit FormatTokenCount (in SessionInfo) and FormatCount (in GatewayUsageInfo) were identical private static methods — a clear DRY violation. Both formatted a long with K/M suffix for compact display. Extract to a new file-scoped internal static class ModelFormatting with a single FormatLargeNumber method, and update both callsites to use it. No behaviour change. 503 tests pass. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- src/OpenClaw.Shared/Models.cs | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/src/OpenClaw.Shared/Models.cs b/src/OpenClaw.Shared/Models.cs index 725a66b..b9d6657 100644 --- a/src/OpenClaw.Shared/Models.cs +++ b/src/OpenClaw.Shared/Models.cs @@ -241,7 +241,7 @@ public string ContextSummaryShort get { if (TotalTokens <= 0 || ContextTokens <= 0) return ""; - return $"{FormatTokenCount(TotalTokens)}/{FormatTokenCount(ContextTokens)}"; + return $"{ModelFormatting.FormatLargeNumber(TotalTokens)}/{ModelFormatting.FormatLargeNumber(ContextTokens)}"; } } @@ -270,12 +270,6 @@ public string ShortKey } } - private static string FormatTokenCount(long n) - { - if (n >= 1_000_000) return $"{n / 1_000_000.0:F1}M"; - if (n >= 1_000) return $"{n / 1_000.0:F1}K"; - return n.ToString(); - } } public class GatewayUsageInfo @@ -294,7 +288,7 @@ public string DisplayText { var parts = new List(); if (TotalTokens > 0) - parts.Add($"Tokens: {FormatCount(TotalTokens)}"); + parts.Add($"Tokens: {ModelFormatting.FormatLargeNumber(TotalTokens)}"); if (CostUsd > 0) parts.Add($"${CostUsd:F2}"); if (RequestCount > 0) @@ -309,12 +303,6 @@ public string DisplayText } } - private static string FormatCount(long n) - { - if (n >= 1_000_000) return $"{n / 1_000_000.0:F1}M"; - if (n >= 1_000) return $"{n / 1_000.0:F1}K"; - return n.ToString(); - } } public class GatewayUsageWindowInfo @@ -454,3 +442,17 @@ private static string FormatAge(DateTime timestampUtc) } } +/// Shared display-formatting helpers used by model classes. +internal static class ModelFormatting +{ + /// + /// Formats a large integer with K/M suffix for compact display (e.g. 1500 → "1.5K", 2_000_000 → "2.0M"). + /// + internal static string FormatLargeNumber(long n) + { + if (n >= 1_000_000) return $"{n / 1_000_000.0:F1}M"; + if (n >= 1_000) return $"{n / 1_000.0:F1}K"; + return n.ToString(); + } +} +