using System; using System.Collections.Generic; using API.Data.Misc; using API.Entities.Enums; using API.Entities.Enums.Device; namespace API.DTOs.Stats.V3; public sealed record UserStatV3 { public AgeRestriction AgeRestriction { get; set; } /// /// The last reading progress on the server (in UTC) /// public DateTime LastReadTime { get; set; } /// /// The last login on the server (in UTC) /// public DateTime LastLogin { get; set; } /// /// Has the user gone through email confirmation /// public bool IsEmailConfirmed { get; set; } /// /// Is the Email a valid address /// public bool HasValidEmail { get; set; } /// /// Float between 0-1 to showcase how much of the libraries a user has access to /// public float PercentageOfLibrariesHasAccess { get; set; } /// /// Number of reading lists this user created /// public int ReadingListsCreatedCount { get; set; } /// /// Number of collections this user created /// public int CollectionsCreatedCount { get; set; } /// /// Number of series in want to read for this user /// public int WantToReadSeriesCount { get; set; } /// /// Active locale for the user /// public string Locale { get; set; } /// /// Active Theme (name) /// public string ActiveTheme { get; set; } /// /// Number of series with Bookmarks created /// public int SeriesBookmarksCreatedCount { get; set; } /// /// Kavita+ only - Has an AniList Token set /// public bool HasAniListToken { get; set; } /// /// Kavita+ only - Has a MAL Token set /// public bool HasMALToken { get; set; } /// /// Number of Smart Filters a user has created /// public int SmartFilterCreatedCount { get; set; } /// /// Is the user sharing reviews /// public bool IsSharingReviews { get; set; } /// /// Is the user sharing their profile /// public bool IsSharingProfile { get; set; } /// /// Is the user sharing annotations /// public bool IsSharingAnnotations { get; set; } /// /// The number of devices setup and their platforms /// public ICollection DevicePlatforms { get; set; } /// /// Roles for this user /// public ICollection Roles { get; set; } /// /// Who manages the user (OIDC, Kavita) /// public IdentityProvider IdentityProvider { get; set; } /// /// Total seconds read /// /// Powers Top Reader badges public long TotalSecondsRead { get; set; } /// /// Total pages read /// /// Powers Top Reader badges public long TotalPagesRead { get; set; } /// /// Total words read /// /// Powers Top Reader badges public long TotalWordsRead { get; set; } /// /// An anonymous identifier for the social badges feature. This is the InstallId (which is malleable) and UserId from DB. /// public string UserId { get; set; } }