using Avalonia.Data.Converters;
using System;
using System.Globalization;

namespace Harmonia.UI.Converters;

public sealed class SecondsToStringConverter : IValueConverter
{
    public SecondsToStringConverter()
    {

    }

    public object? Convert(object? value, Type targetType, object? parameter, CultureInfo culture)
    {
        if (value is not double doubleValue)
            return null;

        TimeSpan timeSpan = TimeSpan.FromSeconds(doubleValue);

        if (timeSpan.Hours >= 1)
            return timeSpan.ToString(@"%h\:mm\:ss");

        return timeSpan.ToString(@"%m\:ss");
    }

    public object? ConvertBack(object? value, Type targetType, object? parameter, CultureInfo culture)
    {
        if (value == null)
            return null;

        if (value is not string stringValue)
            return null;

        return TimeSpan.Parse(stringValue);
    }
}