using System.Text.Json;
using System.Text.Json.Serialization;
using TeleWave.Application.Common.Interfaces;

namespace TeleWave.Application.Broadcast.Bumpers;

/// <summary>
/// Сериализация готовых строк заставки в кэш-запись. Хранить подставленный текст обязательно:
/// время показа и пара соседей из ссылок задним числом не восстанавливаются, а ffmpeg запускается
/// фоновым сервисом уже после того, как лента записана.
/// </summary>
public static class BumperRenderedText
{
    private static readonly JsonSerializerOptions Options = new()
    {
        PropertyNamingPolicy = JsonNamingPolicy.CamelCase,
        Converters = { new JsonStringEnumConverter() },
    };

    public static string ToJson(IReadOnlyList<BumperRenderLine> lines) =>
        JsonSerializer.Serialize(lines, Options);

    public static IReadOnlyList<BumperRenderLine> FromJson(string? json)
    {
        if (string.IsNullOrWhiteSpace(json))
            return [];

        try
        {
            return JsonSerializer.Deserialize<List<BumperRenderLine>>(json, Options) ?? [];
        }
        catch (JsonException)
        {
            return [];
        }
    }
}
