1
0
mirror of https://github.com/ppy/osu.git synced 2025-02-20 04:23:14 +08:00

Refactor Import() overload to take a list of import tasks instead.

This commit is contained in:
Lucas A 2020-12-16 14:28:16 +01:00
parent b9a8d1e455
commit 5d7294451f
6 changed files with 13 additions and 15 deletions

View File

@ -11,6 +11,7 @@ using Android.OS;
using Android.Provider;
using Android.Views;
using osu.Framework.Android;
using osu.Game.Database;
namespace osu.Android
{
@ -82,7 +83,7 @@ namespace osu.Android
using (var stream = ContentResolver.OpenInputStream(uri))
await stream.CopyToAsync(copy);
await game.Import(copy, filename);
await game.Import(new ImportTask(copy, filename));
}, TaskCreationOptions.LongRunning);
}
}

View File

@ -115,13 +115,13 @@ namespace osu.Game.Database
return Import(notification, paths.Select(p => new ImportTask(p)).ToArray());
}
public Task Import(Stream stream, string filename)
public Task Import(params ImportTask[] tasks)
{
var notification = new ProgressNotification { State = ProgressNotificationState.Active };
PostNotification?.Invoke(notification);
return Import(notification, new ImportTask(stream, filename));
return Import(notification, tasks);
}
protected async Task<IEnumerable<TModel>> Import(ProgressNotification notification, params ImportTask[] tasks)

View File

@ -2,7 +2,6 @@
// See the LICENCE file in the repository root for full licence text.
using System.Collections.Generic;
using System.IO;
using System.Threading.Tasks;
namespace osu.Game.Database
@ -19,11 +18,9 @@ namespace osu.Game.Database
Task Import(params string[] paths);
/// <summary>
/// Import the provided stream as a simple item.
/// Import the specified files from the given import tasks.
/// </summary>
/// <param name="stream">The stream to import files from. Should be in a supported archive format.</param>
/// <param name="filename">The filename of the archive being imported.</param>
Task Import(Stream stream, string filename);
Task Import(params ImportTask[] tasks);
/// <summary>
/// An array of accepted file extensions (in the standard format of ".abc").

View File

@ -52,7 +52,7 @@ using osu.Game.Updater;
using osu.Game.Utils;
using LogLevel = osu.Framework.Logging.LogLevel;
using osu.Game.Users;
using System.IO;
using osu.Game.Database;
namespace osu.Game
{
@ -427,10 +427,10 @@ namespace osu.Game
}, validScreens: new[] { typeof(PlaySongSelect) });
}
public override Task Import(Stream stream, string filename)
public override Task Import(params ImportTask[] imports)
{
// encapsulate task as we don't want to begin the import process until in a ready state.
var importTask = new Task(async () => await base.Import(stream, filename));
var importTask = new Task(async () => await base.Import(imports));
waitForReady(() => this, _ => importTask.Start());

View File

@ -395,14 +395,14 @@ namespace osu.Game
}
}
public virtual async Task Import(Stream stream, string filename)
public virtual async Task Import(params ImportTask[] tasks)
{
var extension = Path.GetExtension(filename)?.ToLowerInvariant();
var extension = Path.GetExtension(tasks.First().Path)?.ToLowerInvariant();
foreach (var importer in fileImporters)
{
if (importer.HandledExtensions.Contains(extension))
await importer.Import(stream, Path.GetFileNameWithoutExtension(filename));
await importer.Import(tasks);
}
}

View File

@ -100,7 +100,7 @@ namespace osu.Game.Screens.Edit.Setup
return Task.CompletedTask;
}
Task ICanAcceptFiles.Import(Stream stream, string filename) => throw new NotImplementedException();
Task ICanAcceptFiles.Import(params ImportTask[] tasks) => throw new NotImplementedException();
protected override void LoadComplete()
{