Code/SboxSuperuser/Core/Menu/TimeRemaining.cs

Small helper that formats a Span of remaining time into short strings for menu display, such as "2h 14m", "under 1m" or "expiring".

namespace SboxSuperuser.Core.Menu;

/// <summary>Short, human wording for how long a restriction has left, such as "2h 14m".</summary>
internal static class TimeRemaining
{
	internal static string Format( TimeSpan remaining )
	{
		if ( remaining <= TimeSpan.Zero ) return "expiring";
		if ( remaining < TimeSpan.FromMinutes( 1 ) ) return "under 1m";
		if ( remaining < TimeSpan.FromHours( 1 ) ) return $"{(int)remaining.TotalMinutes}m";
		if ( remaining < TimeSpan.FromDays( 1 ) ) return $"{(int)remaining.TotalHours}h {remaining.Minutes}m";
		return $"{(int)remaining.TotalDays}d {remaining.Hours}h";
	}
}