Merge remote-tracking branch 'upstream/master' into triangle-memory-reudction

This commit is contained in:
Dean Herbert 2019-07-19 23:43:17 +09:00
commit f08d722083
9 changed files with 51 additions and 26 deletions

View File

@ -7,21 +7,20 @@ using osu.Game.Online.API.Requests.Responses;
namespace osu.Game.Online.API.Requests namespace osu.Game.Online.API.Requests
{ {
public class GetUserBeatmapsRequest : APIRequest<List<APIBeatmapSet>> public class GetUserBeatmapsRequest : PaginatedAPIRequest<List<APIBeatmapSet>>
{ {
private readonly long userId; private readonly long userId;
private readonly int offset;
private readonly BeatmapSetType type; private readonly BeatmapSetType type;
public GetUserBeatmapsRequest(long userId, BeatmapSetType type, int offset = 0) public GetUserBeatmapsRequest(long userId, BeatmapSetType type, int page = 0, int itemsPerPage = 6)
: base(page, itemsPerPage)
{ {
this.userId = userId; this.userId = userId;
this.offset = offset;
this.type = type; this.type = type;
} }
// ReSharper disable once ImpureMethodCallOnReadonlyValueField protected override string Target => $@"users/{userId}/beatmapsets/{type.ToString().Underscore()}";
protected override string Target => $@"users/{userId}/beatmapsets/{type.ToString().Underscore()}?offset={offset}";
} }
public enum BeatmapSetType public enum BeatmapSetType

View File

@ -6,17 +6,16 @@ using osu.Game.Online.API.Requests.Responses;
namespace osu.Game.Online.API.Requests namespace osu.Game.Online.API.Requests
{ {
public class GetUserMostPlayedBeatmapsRequest : APIRequest<List<APIUserMostPlayedBeatmap>> public class GetUserMostPlayedBeatmapsRequest : PaginatedAPIRequest<List<APIUserMostPlayedBeatmap>>
{ {
private readonly long userId; private readonly long userId;
private readonly int offset;
public GetUserMostPlayedBeatmapsRequest(long userId, int offset = 0) public GetUserMostPlayedBeatmapsRequest(long userId, int page = 0, int itemsPerPage = 5)
: base(page, itemsPerPage)
{ {
this.userId = userId; this.userId = userId;
this.offset = offset;
} }
protected override string Target => $@"users/{userId}/beatmapsets/most_played?offset={offset}"; protected override string Target => $@"users/{userId}/beatmapsets/most_played";
} }
} }

View File

@ -6,18 +6,17 @@ using osu.Game.Online.API.Requests.Responses;
namespace osu.Game.Online.API.Requests namespace osu.Game.Online.API.Requests
{ {
public class GetUserRecentActivitiesRequest : APIRequest<List<APIRecentActivity>> public class GetUserRecentActivitiesRequest : PaginatedAPIRequest<List<APIRecentActivity>>
{ {
private readonly long userId; private readonly long userId;
private readonly int offset;
public GetUserRecentActivitiesRequest(long userId, int offset = 0) public GetUserRecentActivitiesRequest(long userId, int page = 0, int itemsPerPage = 5)
: base(page, itemsPerPage)
{ {
this.userId = userId; this.userId = userId;
this.offset = offset;
} }
protected override string Target => $"users/{userId}/recent_activity?offset={offset}"; protected override string Target => $"users/{userId}/recent_activity";
} }
public enum RecentActivityType public enum RecentActivityType

View File

@ -6,21 +6,19 @@ using osu.Game.Online.API.Requests.Responses;
namespace osu.Game.Online.API.Requests namespace osu.Game.Online.API.Requests
{ {
public class GetUserScoresRequest : APIRequest<List<APILegacyScoreInfo>> public class GetUserScoresRequest : PaginatedAPIRequest<List<APILegacyScoreInfo>>
{ {
private readonly long userId; private readonly long userId;
private readonly ScoreType type; private readonly ScoreType type;
private readonly int offset;
public GetUserScoresRequest(long userId, ScoreType type, int offset = 0) public GetUserScoresRequest(long userId, ScoreType type, int page = 0, int itemsPerPage = 5)
: base(page, itemsPerPage)
{ {
this.userId = userId; this.userId = userId;
this.type = type; this.type = type;
this.offset = offset;
} }
// ReSharper disable once ImpureMethodCallOnReadonlyValueField protected override string Target => $@"users/{userId}/scores/{type.ToString().ToLowerInvariant()}";
protected override string Target => $@"users/{userId}/scores/{type.ToString().ToLowerInvariant()}?offset={offset}";
} }
public enum ScoreType public enum ScoreType

View File

@ -0,0 +1,30 @@
// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.
// See the LICENCE file in the repository root for full licence text.
using System.Globalization;
using osu.Framework.IO.Network;
namespace osu.Game.Online.API.Requests
{
public abstract class PaginatedAPIRequest<T> : APIRequest<T>
{
private readonly int page;
private readonly int itemsPerPage;
protected PaginatedAPIRequest(int page, int itemsPerPage)
{
this.page = page;
this.itemsPerPage = itemsPerPage;
}
protected override WebRequest CreateWebRequest()
{
var req = base.CreateWebRequest();
req.AddParameter("offset", (page * itemsPerPage).ToString(CultureInfo.InvariantCulture));
req.AddParameter("limit", itemsPerPage.ToString(CultureInfo.InvariantCulture));
return req;
}
}
}

View File

@ -29,7 +29,7 @@ namespace osu.Game.Overlays.Profile.Sections.Beatmaps
protected override void ShowMore() protected override void ShowMore()
{ {
request = new GetUserBeatmapsRequest(User.Value.Id, type, VisiblePages++ * ItemsPerPage); request = new GetUserBeatmapsRequest(User.Value.Id, type, VisiblePages++, ItemsPerPage);
request.Success += sets => Schedule(() => request.Success += sets => Schedule(() =>
{ {
MoreButton.FadeTo(sets.Count == ItemsPerPage ? 1 : 0); MoreButton.FadeTo(sets.Count == ItemsPerPage ? 1 : 0);

View File

@ -24,7 +24,7 @@ namespace osu.Game.Overlays.Profile.Sections.Historical
protected override void ShowMore() protected override void ShowMore()
{ {
request = new GetUserMostPlayedBeatmapsRequest(User.Value.Id, VisiblePages++ * ItemsPerPage); request = new GetUserMostPlayedBeatmapsRequest(User.Value.Id, VisiblePages++, ItemsPerPage);
request.Success += beatmaps => Schedule(() => request.Success += beatmaps => Schedule(() =>
{ {
MoreButton.FadeTo(beatmaps.Count == ItemsPerPage ? 1 : 0); MoreButton.FadeTo(beatmaps.Count == ItemsPerPage ? 1 : 0);

View File

@ -31,7 +31,7 @@ namespace osu.Game.Overlays.Profile.Sections.Ranks
protected override void ShowMore() protected override void ShowMore()
{ {
request = new GetUserScoresRequest(User.Value.Id, type, VisiblePages++ * ItemsPerPage); request = new GetUserScoresRequest(User.Value.Id, type, VisiblePages++, ItemsPerPage);
request.Success += scores => Schedule(() => request.Success += scores => Schedule(() =>
{ {
foreach (var s in scores) foreach (var s in scores)

View File

@ -22,7 +22,7 @@ namespace osu.Game.Overlays.Profile.Sections.Recent
protected override void ShowMore() protected override void ShowMore()
{ {
request = new GetUserRecentActivitiesRequest(User.Value.Id, VisiblePages++ * ItemsPerPage); request = new GetUserRecentActivitiesRequest(User.Value.Id, VisiblePages++, ItemsPerPage);
request.Success += activities => Schedule(() => request.Success += activities => Schedule(() =>
{ {
MoreButton.FadeTo(activities.Count == ItemsPerPage ? 1 : 0); MoreButton.FadeTo(activities.Count == ItemsPerPage ? 1 : 0);