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; }