From c3d4a97565dfe9cd31024565400f5256d26ce5fc Mon Sep 17 00:00:00 2001 From: jvyden Date: Tue, 28 Dec 2021 17:15:31 -0500 Subject: [PATCH] Fix category slot serialization bug --- ProjectLighthouse/Types/Categories/Category.cs | 18 +++++++++++++++++- .../Types/Categories/NewestLevelsCategory.cs | 1 + .../Types/Categories/QueueCategory.cs | 5 +++-- .../Types/Categories/TeamPicksCategory.cs | 1 + 4 files changed, 22 insertions(+), 3 deletions(-) diff --git a/ProjectLighthouse/Types/Categories/Category.cs b/ProjectLighthouse/Types/Categories/Category.cs index 8d9de280..10e4ef72 100644 --- a/ProjectLighthouse/Types/Categories/Category.cs +++ b/ProjectLighthouse/Types/Categories/Category.cs @@ -1,4 +1,5 @@ #nullable enable +using System.Collections.Generic; using System.Xml.Serialization; using LBPUnion.ProjectLighthouse.Serialization; using LBPUnion.ProjectLighthouse.Types.Levels; @@ -29,6 +30,8 @@ namespace LBPUnion.ProjectLighthouse.Types.Categories public abstract Slot? GetPreviewSlot(Database database); + public abstract int GetTotalSlots(Database database); + public string Serialize(Database database) { Slot? previewSlot = this.GetPreviewSlot(database); @@ -36,7 +39,20 @@ namespace LBPUnion.ProjectLighthouse.Types.Categories string previewResults = ""; if (previewSlot != null) { - previewResults = LbpSerializer.StringElement("results", LbpSerializer.StringElement("slots", previewSlot.Serialize())); + previewResults = LbpSerializer.TaggedStringElement + ( + "results", + previewSlot.Serialize(), + new Dictionary + { + { + "total", this.GetTotalSlots(database) + }, + { + "hint_start", "2" + }, + } + ); } return LbpSerializer.StringElement diff --git a/ProjectLighthouse/Types/Categories/NewestLevelsCategory.cs b/ProjectLighthouse/Types/Categories/NewestLevelsCategory.cs index a46ddb31..efd76b90 100644 --- a/ProjectLighthouse/Types/Categories/NewestLevelsCategory.cs +++ b/ProjectLighthouse/Types/Categories/NewestLevelsCategory.cs @@ -11,5 +11,6 @@ namespace LBPUnion.ProjectLighthouse.Types.Categories public override string IconHash { get; set; } = "g820623"; public override string Endpoint { get; set; } = "newest"; public override Slot? GetPreviewSlot(Database database) => database.Slots.OrderByDescending(s => s.FirstUploaded).FirstOrDefault(); + public override int GetTotalSlots(Database database) => database.Slots.Count(); } } \ No newline at end of file diff --git a/ProjectLighthouse/Types/Categories/QueueCategory.cs b/ProjectLighthouse/Types/Categories/QueueCategory.cs index 5629eb80..63de388a 100644 --- a/ProjectLighthouse/Types/Categories/QueueCategory.cs +++ b/ProjectLighthouse/Types/Categories/QueueCategory.cs @@ -25,8 +25,9 @@ namespace LBPUnion.ProjectLighthouse.Types.Categories } } - public override Slot? GetPreviewSlot - (Database database) + public override Slot? GetPreviewSlot(Database database) => database.QueuedLevels.Include(q => q.Slot).FirstOrDefault(q => q.UserId == this.user.UserId)?.Slot; + + public override int GetTotalSlots(Database database) => database.QueuedLevels.Count(q => q.UserId == this.user.UserId); } } \ No newline at end of file diff --git a/ProjectLighthouse/Types/Categories/TeamPicksCategory.cs b/ProjectLighthouse/Types/Categories/TeamPicksCategory.cs index 58a3441b..44bd36af 100644 --- a/ProjectLighthouse/Types/Categories/TeamPicksCategory.cs +++ b/ProjectLighthouse/Types/Categories/TeamPicksCategory.cs @@ -11,5 +11,6 @@ namespace LBPUnion.ProjectLighthouse.Types.Categories public override string IconHash { get; set; } = "g820626"; public override string Endpoint { get; set; } = "team_picks"; public override Slot? GetPreviewSlot(Database database) => database.Slots.OrderByDescending(s => s.FirstUploaded).FirstOrDefault(s => s.TeamPick); + public override int GetTotalSlots(Database database) => database.Slots.Count(s => s.TeamPick); } } \ No newline at end of file