using System.Security.Cryptography;

namespace TeleWave.Application.Broadcast.Bumpers;

/// <summary>
/// Детерминированный id ассета-превью для подблока заставки: один и тот же на каждый повторный рендер,
/// поэтому предпросмотр перезаписывает единственный каталог assets/{id}, а не плодит новые.
/// </summary>
public static class BumperPreview
{
    /// <summary>
    /// Свёртка id подблока в стабильный id превью. Не защита — просто способ получить из одного GUID
    /// другой, воспроизводимо; берём SHA-256 и первые 16 байт, чтобы в коде не оставалось вызовов
    /// сломанных хеш-функций, которые потом приходится каждый раз объяснять сканерам.
    /// </summary>
    public static Guid AssetId(Guid variantId) =>
        new(SHA256.HashData(variantId.ToByteArray()).AsSpan(0, 16));
}
