From f8092a2d9e62e96639bb4b7f3b9979c1cfba4fb6 Mon Sep 17 00:00:00 2001 From: Toaster2 Date: Sat, 11 Apr 2026 19:28:31 +0200 Subject: [PATCH 1/2] Separate API endpoint for getting announcements, sort announcements by newest --- Refresh.Database/GameDatabaseContext.Notifications.cs | 2 +- Refresh.Interfaces.APIv3/Endpoints/InstanceApiEndpoints.cs | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/Refresh.Database/GameDatabaseContext.Notifications.cs b/Refresh.Database/GameDatabaseContext.Notifications.cs index 8099a870..a9d2cbaa 100644 --- a/Refresh.Database/GameDatabaseContext.Notifications.cs +++ b/Refresh.Database/GameDatabaseContext.Notifications.cs @@ -81,7 +81,7 @@ public void DeleteNotification(GameNotification notification) }); } - public IEnumerable GetAnnouncements() => this.GameAnnouncements; + public IEnumerable GetAnnouncements() => this.GameAnnouncements.OrderByDescending(a => a.CreatedAt); public GameAnnouncement? GetAnnouncementById(ObjectId id) => this.GameAnnouncements.FirstOrDefault(a => a.AnnouncementId == id); diff --git a/Refresh.Interfaces.APIv3/Endpoints/InstanceApiEndpoints.cs b/Refresh.Interfaces.APIv3/Endpoints/InstanceApiEndpoints.cs index abe7f55f..77ec7746 100644 --- a/Refresh.Interfaces.APIv3/Endpoints/InstanceApiEndpoints.cs +++ b/Refresh.Interfaces.APIv3/Endpoints/InstanceApiEndpoints.cs @@ -41,6 +41,12 @@ public ApiResponse GetStatistics(RequestContext context, }; } + [ApiV3Endpoint("announcements"), Authentication(false), AllowDuringMaintenance] + [DocSummary("Retrieves all current announcements.")] + [RateLimitSettings(300, 60, 240, "announcements-api")] + public ApiResponse> GetAllAnnouncements(RequestContext context, DataContext dataContext) + => ApiGameAnnouncementResponse.FromOldList(dataContext.Database.GetAnnouncements().ToArray(), dataContext).ToList(); + [ApiV3Endpoint("instance"), Authentication(false), AllowDuringMaintenance] [ClientCacheResponse(3600)] // One hour [DocSummary("Retrieves various information and metadata about the Refresh instance.")] From 6c1b5ca40d96f13acf75200a311196d54960d567 Mon Sep 17 00:00:00 2001 From: Toaster2 Date: Sun, 12 Apr 2026 20:12:47 +0200 Subject: [PATCH 2/2] Slightly better formatting for in-game announcement lists --- Refresh.Interfaces.Game/Endpoints/AnnouncementEndpoints.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Refresh.Interfaces.Game/Endpoints/AnnouncementEndpoints.cs b/Refresh.Interfaces.Game/Endpoints/AnnouncementEndpoints.cs index 83717448..54bd3563 100644 --- a/Refresh.Interfaces.Game/Endpoints/AnnouncementEndpoints.cs +++ b/Refresh.Interfaces.Game/Endpoints/AnnouncementEndpoints.cs @@ -47,7 +47,7 @@ private static bool AnnounceGetAnnouncements(StringBuilder output, GameDatabaseC { IEnumerable announcements = database.GetAnnouncements().ToList(); foreach (GameAnnouncement announcement in announcements) - output.Append($"{announcement.Title}: {announcement.Text}\n"); + output.Append($"{announcement.Title}: {announcement.Text}\n\n"); return announcements.Any(); }