using System.ComponentModel.DataAnnotations; using API.DTOs.Theme; using API.Entities; using API.Entities.Enums; using API.Entities.Enums.UserPreferences; namespace API.DTOs; #nullable enable public sealed record UserPreferencesDto { /// [Required] public ReadingDirection ReadingDirection { get; set; } /// [Required] public ScalingOption ScalingOption { get; set; } /// [Required] public PageSplitOption PageSplitOption { get; set; } /// [Required] public ReaderMode ReaderMode { get; set; } /// [Required] public LayoutMode LayoutMode { get; set; } /// [Required] public bool EmulateBook { get; set; } /// [Required] public string BackgroundColor { get; set; } = "#000000"; /// [Required] public bool SwipeToPaginate { get; set; } /// [Required] public bool AutoCloseMenu { get; set; } /// [Required] public bool ShowScreenHints { get; set; } = true; /// [Required] public bool AllowAutomaticWebtoonReaderDetection { get; set; } /// [Required] public int BookReaderMargin { get; set; } /// [Required] public int BookReaderLineSpacing { get; set; } /// [Required] public int BookReaderFontSize { get; set; } /// [Required] public string BookReaderFontFamily { get; set; } = null!; /// [Required] public bool BookReaderTapToPaginate { get; set; } /// [Required] public ReadingDirection BookReaderReadingDirection { get; set; } /// [Required] public WritingStyle BookReaderWritingStyle { get; set; } /// /// UI Site Global Setting: The UI theme the user should use. /// /// Should default to Dark [Required] public SiteThemeDto? Theme { get; set; } [Required] public string BookReaderThemeName { get; set; } = null!; /// [Required] public BookPageLayoutMode BookReaderLayoutMode { get; set; } /// [Required] public bool BookReaderImmersiveMode { get; set; } = false; /// [Required] public PageLayoutMode GlobalPageLayoutMode { get; set; } = PageLayoutMode.Cards; /// [Required] public bool BlurUnreadSummaries { get; set; } = false; /// [Required] public bool PromptForDownloadSize { get; set; } = true; /// [Required] public bool NoTransitions { get; set; } = false; /// [Required] public bool CollapseSeriesRelationships { get; set; } = false; /// [Required] public bool ShareReviews { get; set; } = false; /// [Required] public string Locale { get; set; } /// [Required] public PdfTheme PdfTheme { get; set; } = PdfTheme.Dark; /// [Required] public PdfScrollMode PdfScrollMode { get; set; } = PdfScrollMode.Vertical; /// [Required] public PdfSpreadMode PdfSpreadMode { get; set; } = PdfSpreadMode.None; /// public bool AniListScrobblingEnabled { get; set; } /// public bool WantToReadSync { get; set; } }