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 4a5b8896..ca1131d1 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.")] 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(); }