Friends overview online filter

This commit is contained in:
2025-11-16 13:31:07 +08:00
parent 076bf347c8
commit a0ac3b5820

View File

@@ -18,7 +18,7 @@ public class FriendsController(AppDatabase db, RelationshipService rels, Account
[HttpGet("overview")]
[Authorize]
public async Task<ActionResult<List<FriendOverviewItem>>> GetOverview()
public async Task<ActionResult<List<FriendOverviewItem>>> GetOverview([FromQuery] bool includeOffline = false)
{
if (HttpContext.Items["CurrentUser"] is not SnAccount currentUser) return Unauthorized();
@@ -40,20 +40,15 @@ public class FriendsController(AppDatabase db, RelationshipService rels, Account
var statuses = statusesTask.Result;
var activities = activitiesTask.Result;
var result = new List<FriendOverviewItem>();
foreach (var account in accounts)
var result = (from account in accounts
let status = statuses.GetValueOrDefault(account.Id)
where includeOffline || status is { IsOnline: true }
let accountActivities = activities.GetValueOrDefault(account.Id, new List<SnPresenceActivity>())
select new FriendOverviewItem
{
var status = statuses.GetValueOrDefault(account.Id);
var accountActivities = activities.GetValueOrDefault(account.Id, []);
result.Add(new FriendOverviewItem
{
Account = account,
Status = status ?? new SnAccountStatus { AccountId = account.Id },
Account = account, Status = status ?? new SnAccountStatus { AccountId = account.Id },
Activities = accountActivities
});
}
}).ToList();
return Ok(result);
}