using Microsoft.AspNetCore.Components;
namespace DeepDrftPublic.Client.Common;
///
/// The single public-site listener-settings object (Phase 18 wave 18.6, §4a). The generalized analogue of
/// : one scoped holder for every remembered listener preference, seeded at
/// server prerender, carried into WASM via , and persisted to a cookie on
/// change. Today it carries one preference — streaming quality; tomorrow dark mode (and whatever follows)
/// folds in here as another property without disturbing the menu that reads it.
///
/// Built design-for-adaptability per §4a: a new preference is a new [PersistentState] property here
/// plus a new in the menu — not a rewire. Dark mode is intentionally
/// not migrated in now (it keeps its own seam); this object is shaped
/// so that consolidation is later a merge of two identical seams, not a reconciliation of two different ones.
///
///
public class PublicSiteSettings
{
///
/// The listener's streaming-quality preference. Defaults to (Opus,
/// capability-gated — OQ2). Seeded from the streamQuality cookie at prerender; persisted on change
/// by the client cookie service. The player reads this to decide which ?format= to request, but
/// the capability gate and C2 fallback still apply on top, so a
/// preference never forces an unplayable stream.
///
[PersistentState]
public StreamQuality StreamQuality { get; set; } = StreamQuality.LowData;
}