diff --git a/osu.Game.Tests/Visual/SongSelect/TestSceneBeatmapRecommendations.cs b/osu.Game.Tests/Visual/SongSelect/TestSceneBeatmapRecommendations.cs
index 8a4914a31b..6c19206802 100644
--- a/osu.Game.Tests/Visual/SongSelect/TestSceneBeatmapRecommendations.cs
+++ b/osu.Game.Tests/Visual/SongSelect/TestSceneBeatmapRecommendations.cs
@@ -23,8 +23,6 @@ namespace osu.Game.Tests.Visual.SongSelect
{
public class TestSceneBeatmapRecommendations : OsuGameTestScene
{
- protected override bool UseOnlineAPI => false;
-
[Resolved]
private DifficultyRecommender recommender { get; set; }
diff --git a/osu.Game/Rulesets/ILegacyRuleset.cs b/osu.Game/Rulesets/ILegacyRuleset.cs
index 06a85b5261..f4b03baccd 100644
--- a/osu.Game/Rulesets/ILegacyRuleset.cs
+++ b/osu.Game/Rulesets/ILegacyRuleset.cs
@@ -5,6 +5,8 @@ namespace osu.Game.Rulesets
{
public interface ILegacyRuleset
{
+ const int MAX_LEGACY_RULESET_ID = 3;
+
///
/// Identifies the server-side ID of a legacy ruleset.
///
diff --git a/osu.Game/Screens/Select/DifficultyRecommender.cs b/osu.Game/Screens/Select/DifficultyRecommender.cs
index ab64513ecb..f8aaf5c0fd 100644
--- a/osu.Game/Screens/Select/DifficultyRecommender.cs
+++ b/osu.Game/Screens/Select/DifficultyRecommender.cs
@@ -26,6 +26,8 @@ namespace osu.Game.Screens.Select
[Resolved]
private Bindable ruleset { get; set; }
+ private int storedUserId;
+
private readonly Dictionary recommendedStarDifficulty = new Dictionary();
private readonly IBindable apiState = new Bindable();
@@ -69,13 +71,15 @@ namespace osu.Game.Screens.Select
return beatmap;
}
- private void calculateRecommendedDifficulties(bool onlyIfNoPreviousValues = false)
+ private void calculateRecommendedDifficulties()
{
- if (recommendedStarDifficulty.Any() && onlyIfNoPreviousValues)
+ if (recommendedStarDifficulty.Any() && api.LocalUser.Value.Id == storedUserId)
return;
+ storedUserId = api.LocalUser.Value.Id;
+
// only query API for built-in rulesets
- rulesets.AvailableRulesets.Where(ruleset => ruleset.ID <= 3).ForEach(rulesetInfo =>
+ rulesets.AvailableRulesets.Where(ruleset => ruleset.ID <= ILegacyRuleset.MAX_LEGACY_RULESET_ID).ForEach(rulesetInfo =>
{
var req = new GetUserRequest(api.LocalUser.Value.Id, rulesetInfo);
@@ -117,7 +121,7 @@ namespace osu.Game.Screens.Select
switch (state.NewValue)
{
case APIState.Online:
- calculateRecommendedDifficulties(true);
+ calculateRecommendedDifficulties();
break;
}
});