using System; using System.Collections.Generic; using System.Collections.Immutable; using Kavita.Common.Extensions; using Kavita.Common.Helpers; using Kavita.Models.Entities; using Kavita.Models.Entities.Enums; using Kavita.Models.Entities.Enums.Font; using Kavita.Models.Entities.Enums.User; using Kavita.Models.Entities.User; namespace Kavita.Models; public static class Defaults { public static readonly string DefaultFont = "Default"; /// /// Generated on Startup. Seed.SeedSettings must run before /// public static ImmutableArray DefaultSettings; public static readonly ImmutableArray DefaultHighlightSlots = [ new() { Id = 1, SlotNumber = 0, Color = new RgbaColor { R = 0, G = 255, B = 255, A = 0.4f } }, new() { Id = 2, SlotNumber = 1, Color = new RgbaColor { R = 0, G = 255, B = 0, A = 0.4f } }, new() { Id = 3, SlotNumber = 2, Color = new RgbaColor { R = 255, G = 255, B = 0, A = 0.4f } }, new() { Id = 4, SlotNumber = 3, Color = new RgbaColor { R = 255, G = 165, B = 0, A = 0.4f } }, new() { Id = 5, SlotNumber = 4, Color = new RgbaColor { R = 255, G = 0, B = 255, A = 0.4f } } ]; public static readonly ImmutableArray DefaultFonts = [ new () { Name = DefaultFont, NormalizedName = DefaultFont.ToNormalized(), Provider = FontProvider.System, FileName = string.Empty, }, new () { Name = "Merriweather", NormalizedName = "Merriweather".ToNormalized(), Provider = FontProvider.System, FileName = "Merriweather-Regular.woff2", }, new () { Name = "EB Garamond", NormalizedName = "EB Garamond".ToNormalized(), Provider = FontProvider.System, FileName = "EBGaramond-VariableFont_wght.woff2", }, new () { Name = "Fira Sans", NormalizedName = "Fira Sans".ToNormalized(), Provider = FontProvider.System, FileName = "FiraSans-Regular.woff2", }, new () { Name = "Lato", NormalizedName = "Lato".ToNormalized(), Provider = FontProvider.System, FileName = "Lato-Regular.woff2", }, new () { Name = "Libre Baskerville", NormalizedName = "Libre Baskerville".ToNormalized(), Provider = FontProvider.System, FileName = "LibreBaskerville-Regular.woff2", }, new () { Name = "Nanum Gothic", NormalizedName = ("Nanum Gothic").ToNormalized(), Provider = FontProvider.System, FileName = "NanumGothic-Regular.woff2", }, new () { Name = "Open Dyslexic", NormalizedName = ("Open Dyslexic").ToNormalized(), Provider = FontProvider.System, FileName = "OpenDyslexic-Regular.woff2", }, new () { Name = "RocknRoll One", NormalizedName = ("RocknRoll One").ToNormalized(), Provider = FontProvider.System, FileName = "RocknRollOne-Regular.woff2", }, new () { Name = "Fast Font Serif", NormalizedName = ("Fast Font Serif").ToNormalized(), Provider = FontProvider.System, FileName = "Fast_Serif.woff2", }, new () { Name = "Fast Font Sans", NormalizedName = ("Fast Font Sans").ToNormalized(), Provider = FontProvider.System, FileName = "Fast_Sans.woff2", } ]; public static readonly ImmutableArray DefaultThemes = [ ..new List { SiteTheme.DefaultTheme, }.ToArray() ]; public static readonly ImmutableArray DefaultStreams = [ ..new List { new() { Name = "on-deck", StreamType = DashboardStreamType.OnDeck, Order = 0, IsProvided = true, Visible = true }, new() { Name = "recently-updated", StreamType = DashboardStreamType.RecentlyUpdated, Order = 1, IsProvided = true, Visible = true }, new() { Name = "newly-added", StreamType = DashboardStreamType.NewlyAdded, Order = 2, IsProvided = true, Visible = true }, new() { Name = "more-in-genre", StreamType = DashboardStreamType.MoreInGenre, Order = 3, IsProvided = true, Visible = false }, }.ToArray() ]; public static readonly ImmutableArray DefaultSideNavStreams = [ new() { Name = "want-to-read", StreamType = SideNavStreamType.WantToRead, Order = 1, IsProvided = true, Visible = true }, new() { Name = "collections", StreamType = SideNavStreamType.Collections, Order = 2, IsProvided = true, Visible = true }, new() { Name = "reading-lists", StreamType = SideNavStreamType.ReadingLists, Order = 3, IsProvided = true, Visible = true }, new() { Name = "bookmarks", StreamType = SideNavStreamType.Bookmarks, Order = 4, IsProvided = true, Visible = true }, new() { Name = "all-series", StreamType = SideNavStreamType.AllSeries, Order = 5, IsProvided = true, Visible = true }, new() { Name = "browse-authors", StreamType = SideNavStreamType.BrowsePeople, Order = 6, IsProvided = true, Visible = true } ]; public static List CreateDefaultAuthKeys() { return [ new AppUserAuthKey() { Name = AuthKeyHelper.OpdsKeyName, Key = AuthKeyHelper.GenerateKey(32), CreatedAtUtc = DateTime.UtcNow, ExpiresAtUtc = null, Provider = AuthKeyProvider.System, }, new AppUserAuthKey() { Name = AuthKeyHelper.ImageOnlyKeyName, Key = AuthKeyHelper.GenerateKey(32), CreatedAtUtc = DateTime.UtcNow, ExpiresAtUtc = null, Provider = AuthKeyProvider.System, } ]; } }