refactor(ui): dedupe FormatRemaining between UsagePill and UsageMonitorModal
Both viewmodels carried byte-identical copies of the reset-countdown formatter. Moved it to UsageTimeFormat.FormatRemaining and pointed both call sites at it; locale keys and output unchanged.
This commit is contained in:
@@ -391,8 +391,10 @@ public sealed partial class UsageGaugeRowViewModel : ObservableObject
|
||||
|
||||
public bool IsWarnSeverity => !string.Equals(Severity, "normal", StringComparison.OrdinalIgnoreCase);
|
||||
|
||||
// Includes the absolute HH:mm alongside the countdown, unlike the pill tooltip's shorter
|
||||
// "resetIn" line (usage.pill.resetIn) — the modal has room for the detail, the tooltip doesn't.
|
||||
public string ResetText => ResetsAt is { } r
|
||||
? Loc.T("modals.usageMonitor.resetIn", FormatRemaining(r), r.ToLocalTime().ToString("HH:mm"))
|
||||
? Loc.T("modals.usageMonitor.resetIn", UsageTimeFormat.FormatRemaining(r), r.ToLocalTime().ToString("HH:mm"))
|
||||
: "";
|
||||
|
||||
/// <summary>Live values from a fresh snapshot, without replacing the row instance mid-view.</summary>
|
||||
@@ -437,17 +439,6 @@ public sealed partial class UsageGaugeRowViewModel : ObservableObject
|
||||
|
||||
return Commit();
|
||||
}
|
||||
|
||||
private static string FormatRemaining(DateTimeOffset resetsAt)
|
||||
{
|
||||
var remaining = resetsAt - DateTimeOffset.UtcNow;
|
||||
if (remaining < TimeSpan.Zero) remaining = TimeSpan.Zero;
|
||||
var hours = (int)remaining.TotalHours;
|
||||
var minutes = remaining.Minutes;
|
||||
return hours > 0
|
||||
? Loc.T("usage.pill.durationHoursMinutes", hours, minutes)
|
||||
: Loc.T("usage.pill.durationMinutes", minutes);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
Reference in New Issue
Block a user