MoveCommand

This commit is contained in:
2023-07-04 22:07:11 +02:00
parent 718fd53026
commit 453834646b
17 changed files with 263 additions and 22 deletions

View File

@@ -24,12 +24,4 @@ public class LocalItemDeleter : IItemDeleter<ILocalContentProvider>
return Task.CompletedTask;
}
public async Task DeleteAsync(IContentProvider contentProvider, FullName fullName)
{
var localContentProvider = contentProvider as ILocalContentProvider;
if (localContentProvider is null) throw new ArgumentException("Content provider is not a local content provider", nameof(contentProvider));
await DeleteAsync(localContentProvider, fullName);
}
}

View File

@@ -0,0 +1,28 @@
using FileTime.Core.ContentAccess;
using FileTime.Core.Models;
namespace FileTime.Providers.Local;
public class LocalItemMover : IItemMover<ILocalContentProvider>
{
public Task RenameAsync(ILocalContentProvider contentProvider, FullName fullName, FullName newPath)
{
var source = contentProvider.GetNativePath(fullName);
var destination = contentProvider.GetNativePath(newPath);
if (File.Exists(source.Path))
{
File.Move(source.Path, destination.Path);
}
else if (Directory.Exists(source.Path))
{
Directory.Move(source.Path, destination.Path);
}
else
{
throw new FileNotFoundException(source.Path);
}
return Task.CompletedTask;
}
}

View File

@@ -14,6 +14,8 @@ public static class Startup
serviceCollection.TryAddSingleton<IItemCreator<LocalContentProvider>>(sp => sp.GetRequiredService<IItemCreator<ILocalContentProvider>>());
serviceCollection.TryAddSingleton<IItemDeleter<ILocalContentProvider>, LocalItemDeleter>();
serviceCollection.TryAddSingleton<IItemDeleter<LocalContentProvider>>(sp => sp.GetRequiredService<IItemDeleter<ILocalContentProvider>>());
serviceCollection.TryAddSingleton<IItemMover<ILocalContentProvider>, LocalItemMover>();
serviceCollection.TryAddSingleton<IItemMover<LocalContentProvider>>(sp => sp.GetRequiredService<IItemMover<ILocalContentProvider>>());
serviceCollection.TryAddSingleton<IContentReaderFactory<ILocalContentProvider>, LocalContentReaderFactory>();
serviceCollection.TryAddSingleton<IContentReaderFactory<LocalContentProvider>>(sp => sp.GetRequiredService<IContentReaderFactory<ILocalContentProvider>>());
serviceCollection.TryAddSingleton<IContentWriterFactory<ILocalContentProvider>, LocalContentWriterFactory>();