diff --git a/DysonNetwork.Sphere/Activity/ActivityController.cs b/DysonNetwork.Sphere/Activity/ActivityController.cs index 9f72fe2..c82f27a 100644 --- a/DysonNetwork.Sphere/Activity/ActivityController.cs +++ b/DysonNetwork.Sphere/Activity/ActivityController.cs @@ -1,6 +1,4 @@ -using DysonNetwork.Sphere.Account; using Microsoft.AspNetCore.Mvc; -using Microsoft.EntityFrameworkCore; using NodaTime; using NodaTime.Text; @@ -24,7 +22,8 @@ public class ActivityController( /// Besides, when users are logged in, it will also mix the other kinds of data and who're plying to them. /// [HttpGet] - public async Task>> ListActivities([FromQuery] string? cursor, [FromQuery] int take = 20) + public async Task>> ListActivities([FromQuery] string? cursor, + [FromQuery] int take = 20) { Instant? cursorTimestamp = null; if (!string.IsNullOrEmpty(cursor)) @@ -41,9 +40,8 @@ public class ActivityController( HttpContext.Items.TryGetValue("CurrentUser", out var currentUserValue); - if (currentUserValue is not Account.Account currentUser) - return Ok(await acts.GetActivitiesForAnyone(take, cursorTimestamp)); - - return Ok(await acts.GetActivities(take, cursorTimestamp, currentUser)); + return currentUserValue is not Account.Account currentUser + ? Ok(await acts.GetActivitiesForAnyone(take, cursorTimestamp)) + : Ok(await acts.GetActivities(take, cursorTimestamp, currentUser)); } } \ No newline at end of file diff --git a/DysonNetwork.Sphere/Activity/ActivityService.cs b/DysonNetwork.Sphere/Activity/ActivityService.cs index 9912f23..50e1c5a 100644 --- a/DysonNetwork.Sphere/Activity/ActivityService.cs +++ b/DysonNetwork.Sphere/Activity/ActivityService.cs @@ -10,7 +10,7 @@ public class ActivityService(AppDatabase db, RelationshipService rels, PostServi public async Task> GetActivitiesForAnyone(int take, Instant? cursor) { var activities = new List(); - + // Crunching up data var posts = await db.Posts .Include(e => e.RepliedPost) @@ -18,7 +18,7 @@ public class ActivityService(AppDatabase db, RelationshipService rels, PostServi .Include(e => e.Categories) .Include(e => e.Tags) .Where(e => e.RepliedPostId == null) - .Where(p => cursor == null || cursor > p.CreatedAt) + .Where(p => cursor == null || p.PublishedAt < cursor) .OrderByDescending(p => p.PublishedAt) .FilterWithVisibility(null, [], isListing: true) .Take(take) @@ -31,22 +31,22 @@ public class ActivityService(AppDatabase db, RelationshipService rels, PostServi foreach (var post in posts) post.ReactionsCount = reactionMaps.TryGetValue(post.Id, out var count) ? count : new Dictionary(); - + // Formatting data foreach (var post in posts) activities.Add(post.ToActivity()); - + if (activities.Count == 0) activities.Add(Activity.Empty()); return activities; } - + public async Task> GetActivities(int take, Instant? cursor, Account.Account currentUser) { var activities = new List(); var userFriends = await rels.ListAccountFriends(currentUser); - + // Crunching data var posts = await db.Posts .Include(e => e.RepliedPost) @@ -54,7 +54,7 @@ public class ActivityService(AppDatabase db, RelationshipService rels, PostServi .Include(e => e.Categories) .Include(e => e.Tags) .Where(e => e.RepliedPostId == null) - .Where(p => cursor == null || p.CreatedAt > cursor) + .Where(p => cursor == null || p.PublishedAt < cursor) .OrderByDescending(p => p.PublishedAt) .FilterWithVisibility(currentUser, userFriends, isListing: true) .Take(take) @@ -67,11 +67,11 @@ public class ActivityService(AppDatabase db, RelationshipService rels, PostServi foreach (var post in posts) post.ReactionsCount = reactionMaps.TryGetValue(post.Id, out var count) ? count : new Dictionary(); - + // Formatting data foreach (var post in posts) activities.Add(post.ToActivity()); - + if (activities.Count == 0) activities.Add(Activity.Empty()); diff --git a/DysonNetwork.Sphere/Post/Post.cs b/DysonNetwork.Sphere/Post/Post.cs index 7aa4871..d3ce4ea 100644 --- a/DysonNetwork.Sphere/Post/Post.cs +++ b/DysonNetwork.Sphere/Post/Post.cs @@ -73,7 +73,7 @@ public class Post : ModelBase, IIdentifiedResource, IActivity { return new Activity.Activity() { - CreatedAt = CreatedAt, + CreatedAt = PublishedAt ?? CreatedAt, UpdatedAt = UpdatedAt, DeletedAt = DeletedAt, Id = Id,