using System.Globalization; namespace DataTransfer.Client.Services; public static class DisplayFormat { public static string Bytes(long bytes) => bytes switch { >= 1024L * 1024 * 1024 => string.Create(CultureInfo.InvariantCulture, $"{bytes / 1024d / 1024d / 1024d:0.#} GB"), >= 1024 * 1024 => string.Create(CultureInfo.InvariantCulture, $"{bytes / 1024d / 1024d:0.0} MB"), >= 1024 => string.Create(CultureInfo.InvariantCulture, $"{bytes / 1024d:0.0} KB"), _ => $"{bytes} B" }; public static string Duration(TimeSpan duration) => duration switch { { TotalHours: >= 1, Minutes: 0, Seconds: 0 } => string.Create(CultureInfo.InvariantCulture, $"{duration.TotalHours:0} h"), { TotalMinutes: >= 1, Seconds: 0 } => string.Create(CultureInfo.InvariantCulture, $"{duration.TotalMinutes:0} min"), _ => string.Create(CultureInfo.InvariantCulture, $"{duration.TotalSeconds:0} s") }; public static string Countdown(TimeSpan remaining) { if (remaining < TimeSpan.Zero) { remaining = TimeSpan.Zero; } return remaining.ToString(remaining.TotalHours >= 1 ? @"h\:mm\:ss" : @"mm\:ss", CultureInfo.InvariantCulture); } }