✨ Friends overview online filter
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user