diff --git a/osu.Game/Online/API/Requests/GetUsersRequest.cs b/osu.Game/Online/API/Requests/GetUsersRequest.cs new file mode 100644 index 0000000000..9a7006f5d6 --- /dev/null +++ b/osu.Game/Online/API/Requests/GetUsersRequest.cs @@ -0,0 +1,19 @@ +// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. +// See the LICENCE file in the repository root for full licence text. + +using System.Linq; + +namespace osu.Game.Online.API.Requests +{ + public class GetUsersRequest : APIRequest + { + private readonly int[] userIds; + + public GetUsersRequest(int[] userIds) + { + this.userIds = userIds; + } + + protected override string Target => $@"users/?{userIds.Select(u => $"ids[]={u}&").Aggregate((a, b) => a + b)}"; + } +} diff --git a/osu.Game/Online/API/Requests/GetUsersResponse.cs b/osu.Game/Online/API/Requests/GetUsersResponse.cs new file mode 100644 index 0000000000..6f49d5cd53 --- /dev/null +++ b/osu.Game/Online/API/Requests/GetUsersResponse.cs @@ -0,0 +1,15 @@ +// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. +// See the LICENCE file in the repository root for full licence text. + +using System.Collections.Generic; +using Newtonsoft.Json; +using osu.Game.Users; + +namespace osu.Game.Online.API.Requests +{ + public class GetUsersResponse : ResponseWithCursor + { + [JsonProperty("users")] + public List Users; + } +} diff --git a/osu.Game/Overlays/Dashboard/CurrentlyPlayingDisplay.cs b/osu.Game/Overlays/Dashboard/CurrentlyPlayingDisplay.cs index dae27f35ae..9020b317ef 100644 --- a/osu.Game/Overlays/Dashboard/CurrentlyPlayingDisplay.cs +++ b/osu.Game/Overlays/Dashboard/CurrentlyPlayingDisplay.cs @@ -54,17 +54,18 @@ namespace osu.Game.Overlays.Dashboard switch (e.Action) { case NotifyCollectionChangedAction.Add: - foreach (var u in e.NewItems.OfType()) + var request = new GetUsersRequest(e.NewItems.OfType().ToArray()); + + request.Success += users => Schedule(() => { - var request = new GetUserRequest(u); - request.Success += user => Schedule(() => + foreach (var user in users.Users) { if (playingUsers.Contains(user.Id)) userFlow.Add(createUserPanel(user)); - }); - api.Queue(request); - } + } + }); + api.Queue(request); break; case NotifyCollectionChangedAction.Remove: diff --git a/osu.Game/Overlays/DashboardOverlay.cs b/osu.Game/Overlays/DashboardOverlay.cs index 787a4985d7..04defce636 100644 --- a/osu.Game/Overlays/DashboardOverlay.cs +++ b/osu.Game/Overlays/DashboardOverlay.cs @@ -131,8 +131,7 @@ namespace osu.Game.Overlays break; case DashboardOverlayTabs.CurrentlyPlaying: - //todo: enable once caching logic is better - //loadDisplay(new CurrentlyPlayingDisplay()); + loadDisplay(new CurrentlyPlayingDisplay()); break; default: