diff --git a/Iceshrimp.Backend/Controllers/Mastodon/AccountController.cs b/Iceshrimp.Backend/Controllers/Mastodon/AccountController.cs index 339a8bbe..6518b699 100644 --- a/Iceshrimp.Backend/Controllers/Mastodon/AccountController.cs +++ b/Iceshrimp.Backend/Controllers/Mastodon/AccountController.cs @@ -1,3 +1,4 @@ +using System.Diagnostics.CodeAnalysis; using System.Net.Mime; using Iceshrimp.Backend.Controllers.Attributes; using Iceshrimp.Backend.Controllers.Mastodon.Attributes; @@ -277,6 +278,40 @@ public class AccountController( return Ok(res); } + + [HttpGet("/api/v1/favourites")] + [Authorize("read:favourites")] + [LinkPagination(20, 40)] + [ProducesResponseType(StatusCodes.Status200OK, Type = typeof(IEnumerable))] + [SuppressMessage("ReSharper", "EntityFramework.UnsupportedServerSideFunctionCall", Justification = "Projectables")] + public async Task GetLikedNotes(MastodonPaginationQuery query) + { + var user = HttpContext.GetUserOrFail(); + var res = await db.Notes + .Where(p => db.Users.First(u => u == user).HasLiked(p)) + .IncludeCommonProperties() + .Paginate(query, ControllerContext) + .RenderAllForMastodonAsync(noteRenderer, user); + + return Ok(res); + } + + [HttpGet("/api/v1/bookmarks")] + [Authorize("read:bookmarks")] + [LinkPagination(20, 40)] + [ProducesResponseType(StatusCodes.Status200OK, Type = typeof(IEnumerable))] + [SuppressMessage("ReSharper", "EntityFramework.UnsupportedServerSideFunctionCall", Justification = "Projectables")] + public async Task GetBookmarkedNotes(MastodonPaginationQuery query) + { + var user = HttpContext.GetUserOrFail(); + var res = await db.Notes + .Where(p => db.Users.First(u => u == user).HasBookmarked(p)) + .IncludeCommonProperties() + .Paginate(query, ControllerContext) + .RenderAllForMastodonAsync(noteRenderer, user); + + return Ok(res); + } [HttpPost("/api/v1/follow_requests/{id}/authorize")] [Authorize("write:follows")]