diff --git a/DysonNetwork.Sphere/Activity/ActivityService.cs b/DysonNetwork.Sphere/Activity/ActivityService.cs index b1cf614..5da2a86 100644 --- a/DysonNetwork.Sphere/Activity/ActivityService.cs +++ b/DysonNetwork.Sphere/Activity/ActivityService.cs @@ -18,15 +18,18 @@ public class ActivityService( { private static double CalculateHotRank(Post.Post post, Instant now) { - var score = post.Upvotes - post.Downvotes; + var score = post.Upvotes - post.Downvotes + post.RepliesCount; var postTime = post.PublishedAt ?? post.CreatedAt; var hours = (now - postTime).TotalHours; // Add 1 to score to prevent negative results for posts with more downvotes than upvotes return (score + 1) / Math.Pow(hours + 2, 1.8); } - public async Task> GetActivitiesForAnyone(int take, Instant? cursor, - HashSet? debugInclude = null) + public async Task> GetActivitiesForAnyone( + int take, + Instant? cursor, + HashSet? debugInclude = null + ) { var activities = new List(); debugInclude ??= new HashSet(); @@ -126,7 +129,9 @@ public class ActivityService( { var activities = new List(); var friendsResponse = await accounts.ListFriendsAsync(new ListRelationshipSimpleRequest - { AccountId = currentUser.Id }); + { + AccountId = currentUser.Id + }); var userFriends = friendsResponse.AccountsId.Select(Guid.Parse).ToList(); var userPublishers = await pub.GetUserPublishers(Guid.Parse(currentUser.Id)); debugInclude ??= []; @@ -203,12 +208,14 @@ public class ActivityService( var filteredPublishersId = filteredPublishers?.Select(e => e.Id).ToList(); // Build the query based on the filter + var userPublishersId = userPublishers.Select(e => e.Id).ToList(); var postsQuery = db.Posts .Include(e => e.RepliedPost) .Include(e => e.ForwardedPost) .Include(e => e.Categories) .Include(e => e.Tags) .Where(p => cursor == null || p.PublishedAt < cursor) + .Where(p => p.RepliedPost == null || userPublishersId.Contains(p.RepliedPost.PublisherId)) .OrderByDescending(p => p.PublishedAt) .AsQueryable(); @@ -284,4 +291,4 @@ public class ActivityService( return rankedPublishers; } -} \ No newline at end of file +} diff --git a/DysonNetwork.Sphere/Post/PostService.cs b/DysonNetwork.Sphere/Post/PostService.cs index 8f245ad..a4f0a99 100644 --- a/DysonNetwork.Sphere/Post/PostService.cs +++ b/DysonNetwork.Sphere/Post/PostService.cs @@ -665,7 +665,7 @@ public static class PostQueryExtensions bool isListing = false ) { - var now = Instant.FromDateTimeUtc(DateTime.UtcNow); + var now = SystemClock.Instance.GetCurrentInstant(); var publishersId = publishers.Select(e => e.Id).ToList(); source = isListing switch @@ -688,4 +688,4 @@ public static class PostQueryExtensions (e.Publisher.AccountId != null && userFriends.Contains(e.Publisher.AccountId.Value)) || publishersId.Contains(e.PublisherId)); } -} \ No newline at end of file +}