From 49fe70b0aa8839ba781def9136624f77503e7352 Mon Sep 17 00:00:00 2001 From: LittleSheep Date: Thu, 31 Jul 2025 11:27:52 +0800 Subject: [PATCH] :sparkles: Featured post --- DysonNetwork.Pass/Auth/AuthController.cs | 6 +++--- DysonNetwork.Sphere/Post/PostController.cs | 19 ++++++++++++++++++- 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/DysonNetwork.Pass/Auth/AuthController.cs b/DysonNetwork.Pass/Auth/AuthController.cs index 8175077..d6baee3 100644 --- a/DysonNetwork.Pass/Auth/AuthController.cs +++ b/DysonNetwork.Pass/Auth/AuthController.cs @@ -19,7 +19,7 @@ public class AuthController( IConfiguration configuration ) : ControllerBase { - private readonly string CookieDomain = configuration["AuthToken:CookieDomain"]!; + private readonly string _cookieDomain = configuration["AuthToken:CookieDomain"]!; public class ChallengeRequest { @@ -257,7 +257,7 @@ public class AuthController( HttpOnly = true, Secure = true, SameSite = SameSiteMode.Lax, - Domain = CookieDomain, + Domain = _cookieDomain, Expires = DateTime.UtcNow.AddDays(30) }); @@ -281,7 +281,7 @@ public class AuthController( { Response.Cookies.Delete(AuthConstants.CookieTokenName, new CookieOptions { - Domain = CookieDomain, + Domain = _cookieDomain, HttpOnly = true, Secure = true, SameSite = SameSiteMode.Lax diff --git a/DysonNetwork.Sphere/Post/PostController.cs b/DysonNetwork.Sphere/Post/PostController.cs index edb35b2..4eb4c0e 100644 --- a/DysonNetwork.Sphere/Post/PostController.cs +++ b/DysonNetwork.Sphere/Post/PostController.cs @@ -119,7 +119,8 @@ public class PostController( var friendsResponse = await accounts.ListFriendsAsync(new ListRelationshipSimpleRequest { AccountId = currentUser.Id }); userFriends = friendsResponse.AccountsId.Select(Guid.Parse).ToList(); - } + } + var userPublishers = currentUser is null ? [] : await pub.GetUserPublishers(Guid.Parse(currentUser.Id)); var queryable = db.Posts @@ -150,6 +151,22 @@ public class PostController( return Ok(posts); } + [HttpGet("{id:guid}/replies/featured")] + public async Task> GetFeaturedReply(Guid id) + { + var now = SystemClock.Instance.GetCurrentInstant(); + var post = await db.Posts + .Where(e => e.RepliedPostId == id) + .OrderByDescending(p => + p.Upvotes * 2 - + p.Downvotes + + ((p.CreatedAt - now).TotalMinutes < 60 ? 5 : 0) + ) + .FirstOrDefaultAsync(); + if (post is null) return NotFound(); + return await ps.LoadPostInfo(post); + } + [HttpGet("{id:guid}/replies")] public async Task>> ListReplies(Guid id, [FromQuery] int offset = 0, [FromQuery] int take = 20)