using System;
using System.Linq;

namespace ytLive.Models;

/// <summary>
/// The app's five canonical scenes. Scenes are worked on by name; you can delete
/// them ("work with less"), but the app only ever adds back one of these five —
/// anything beyond them is OBS territory. The live desktop/game backdrop exists
/// only in the Live scene.
/// </summary>
public static class SceneCatalog
{
    public const string Starting = "Starting";
    public const string Live = "Live";
    public const string Brb = "BRB";
    public const string Chat = "Chat";
    public const string Ending = "Ending";

    public static readonly string[] All = { Starting, Live, Brb, Chat, Ending };

    public static bool IsCanonical(string? name)
        => name != null && All.Contains(name.Trim(), StringComparer.OrdinalIgnoreCase);

    public static bool Is(string? name, string canonical)
        => name != null && string.Equals(name.Trim(), canonical, StringComparison.OrdinalIgnoreCase);

    public static bool IsChat(string? name) => Is(name, Chat);

    /// <summary>Only the Live scene carries the live desktop/game backdrop.</summary>
    public static bool HasBackdrop(string? name) => Is(name, Live);
}
