From 68b5f9a314b420ab520745fdf3ff12b1d2f28dcd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bart=C5=82omiej=20Dach?= Date: Tue, 8 Apr 2025 13:35:24 +0200 Subject: [PATCH] Fix various weirdness around refetching --- .../Select/Leaderboards/BeatmapLeaderboard.cs | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/osu.Game/Screens/Select/Leaderboards/BeatmapLeaderboard.cs b/osu.Game/Screens/Select/Leaderboards/BeatmapLeaderboard.cs index e435554b03..c52cd61c42 100644 --- a/osu.Game/Screens/Select/Leaderboards/BeatmapLeaderboard.cs +++ b/osu.Game/Screens/Select/Leaderboards/BeatmapLeaderboard.cs @@ -63,7 +63,7 @@ namespace osu.Game.Screens.Select.Leaderboards } } - private readonly IBindable fetchedScores = new Bindable(); + private readonly Bindable fetchedScores = new Bindable(); [Resolved] private IBindable ruleset { get; set; } = null!; @@ -86,17 +86,7 @@ namespace osu.Game.Screens.Select.Leaderboards if (filterMods) RefetchScores(); }; - fetchedScores.BindTo(leaderboardManager.Scores); - } - - protected override void LoadComplete() - { - base.LoadComplete(); - fetchedScores.BindValueChanged(_ => - { - if (fetchedScores.Value != null) - SetScores(fetchedScores.Value.TopScores, fetchedScores.Value.UserScore); - }); + ((IBindable)fetchedScores).BindTo(leaderboardManager.Scores); } protected override bool IsOnlineScope => Scope != BeatmapLeaderboardScope.Local; @@ -147,7 +137,17 @@ namespace osu.Game.Screens.Select.Leaderboards .ContinueWith(t => { if (t.Exception != null && !t.IsCanceled) + { Schedule(() => SetErrorState(LeaderboardState.NetworkFailure)); + return; + } + + fetchedScores.UnbindEvents(); + fetchedScores.BindValueChanged(scores => + { + if (scores.NewValue != null) + Schedule(() => SetScores(scores.NewValue.TopScores, scores.NewValue.UserScore)); + }, true); }, cancellationToken); return null;