diff --git a/osu.Game/Extensions/ModelExtensions.cs b/osu.Game/Extensions/ModelExtensions.cs
index 2274da0fd4..f178a5c97b 100644
--- a/osu.Game/Extensions/ModelExtensions.cs
+++ b/osu.Game/Extensions/ModelExtensions.cs
@@ -104,6 +104,14 @@ namespace osu.Game.Extensions
/// Whether online IDs match. If either instance is missing an online ID, this will return false.
public static bool MatchesOnlineID(this APIUser? instance, APIUser? other) => matchesOnlineID(instance, other);
+ ///
+ /// Check whether the online ID of two s match.
+ ///
+ /// The instance to compare.
+ /// The other instance to compare against.
+ /// Whether online IDs match. If either instance is missing an online ID, this will return false.
+ public static bool MatchesOnlineID(this IScoreInfo? instance, IScoreInfo? other) => matchesOnlineID(instance, other);
+
private static bool matchesOnlineID(this IHasOnlineID? instance, IHasOnlineID? other)
{
if (instance == null || other == null)
diff --git a/osu.Game/Online/ScoreDownloadTracker.cs b/osu.Game/Online/ScoreDownloadTracker.cs
index 6320b7ff97..68932cc388 100644
--- a/osu.Game/Online/ScoreDownloadTracker.cs
+++ b/osu.Game/Online/ScoreDownloadTracker.cs
@@ -3,6 +3,7 @@
using System;
using osu.Framework.Allocation;
+using osu.Game.Extensions;
using osu.Game.Online.API;
using osu.Game.Scoring;
@@ -113,7 +114,7 @@ namespace osu.Game.Online
UpdateState(DownloadState.NotDownloaded);
});
- private bool checkEquality(IScoreInfo x, IScoreInfo y) => x.OnlineID == y.OnlineID;
+ private bool checkEquality(IScoreInfo x, IScoreInfo y) => x.MatchesOnlineID(y);
#region Disposal
diff --git a/osu.Game/Scoring/ScoreModelDownloader.cs b/osu.Game/Scoring/ScoreModelDownloader.cs
index 038a4bc351..514b7a57de 100644
--- a/osu.Game/Scoring/ScoreModelDownloader.cs
+++ b/osu.Game/Scoring/ScoreModelDownloader.cs
@@ -2,6 +2,7 @@
// See the LICENCE file in the repository root for full licence text.
using osu.Game.Database;
+using osu.Game.Extensions;
using osu.Game.Online.API;
using osu.Game.Online.API.Requests;
@@ -17,6 +18,6 @@ namespace osu.Game.Scoring
protected override ArchiveDownloadRequest CreateDownloadRequest(IScoreInfo score, bool minimiseDownload) => new DownloadReplayRequest(score);
public override ArchiveDownloadRequest GetExistingDownload(IScoreInfo model)
- => CurrentDownloads.Find(r => r.Model.OnlineID == model.OnlineID);
+ => CurrentDownloads.Find(r => r.Model.MatchesOnlineID(model));
}
}