Move score download logic out of ScoreManager

This commit is contained in:
Dean Herbert
2021-11-25 17:21:05 +09:00
parent 716543b5b3
commit a2ab9f457d
7 changed files with 27 additions and 45 deletions

View File

@ -15,6 +15,9 @@ namespace osu.Game.Online
[Resolved(CanBeNull = true)]
protected ScoreManager? Manager { get; private set; }
[Resolved(CanBeNull = true)]
protected ScoreModelDownloader? Downloader { get; private set; }
private ArchiveDownloadRequest<IScoreInfo>? attachedRequest;
public ScoreDownloadTracker(ScoreInfo trackedItem)
@ -25,7 +28,7 @@ namespace osu.Game.Online
[BackgroundDependencyLoader(true)]
private void load()
{
if (Manager == null)
if (Manager == null || Downloader == null)
return;
// Used to interact with manager classes that don't support interface types. Will eventually be replaced.
@ -38,10 +41,10 @@ namespace osu.Game.Online
if (Manager.IsAvailableLocally(scoreInfo))
UpdateState(DownloadState.LocallyAvailable);
else
attachDownload(Manager.GetExistingDownload(scoreInfo));
attachDownload(Downloader.GetExistingDownload(scoreInfo));
Manager.DownloadBegan += downloadBegan;
Manager.DownloadFailed += downloadFailed;
Downloader.DownloadBegan += downloadBegan;
Downloader.DownloadFailed += downloadFailed;
Manager.ItemUpdated += itemUpdated;
Manager.ItemRemoved += itemRemoved;
}
@ -119,10 +122,14 @@ namespace osu.Game.Online
base.Dispose(isDisposing);
attachDownload(null);
if (Downloader != null)
{
Downloader.DownloadBegan -= downloadBegan;
Downloader.DownloadFailed -= downloadFailed;
}
if (Manager != null)
{
Manager.DownloadBegan -= downloadBegan;
Manager.DownloadFailed -= downloadFailed;
Manager.ItemUpdated -= itemUpdated;
Manager.ItemRemoved -= itemRemoved;
}