This commit is contained in:
2022-02-19 23:41:00 +01:00
parent 6eb02a1a08
commit 087bc906cf
3 changed files with 11 additions and 5 deletions

View File

@@ -53,6 +53,8 @@ namespace FileTime.Core.Providers
protected void SetRootContainers(IEnumerable<IContainer> newRootContainers) protected void SetRootContainers(IEnumerable<IContainer> newRootContainers)
=> RootContainers = newRootContainers.OrderBy(c => c.Name).ToList().AsReadOnly(); => RootContainers = newRootContainers.OrderBy(c => c.Name).ToList().AsReadOnly();
protected void ClearRootContainers() => RootContainers = new List<IContainer>().AsReadOnly();
public override async Task<IReadOnlyList<IContainer>?> GetContainers(CancellationToken token = default) public override async Task<IReadOnlyList<IContainer>?> GetContainers(CancellationToken token = default)
{ {
await InitIfNeeded(); await InitIfNeeded();
@@ -102,7 +104,11 @@ namespace FileTime.Core.Providers
} }
} }
protected virtual Task Init() { return Task.CompletedTask; } protected virtual Task Init()
{
if (RootContainers == null) ClearRootContainers();
return Task.CompletedTask;
}
public override Task<IEnumerable<IItem>> RefreshItems(CancellationToken token = default) { throw new NotImplementedException($"{nameof(RefreshItems)} should not be called in {nameof(ContentProviderBase<T>)}."); } public override Task<IEnumerable<IItem>> RefreshItems(CancellationToken token = default) { throw new NotImplementedException($"{nameof(RefreshItems)} should not be called in {nameof(ContentProviderBase<T>)}."); }

View File

@@ -34,7 +34,7 @@ namespace FileTime.Providers.Sftp
throw new NotImplementedException(); throw new NotImplementedException();
} }
public override async Task<IEnumerable<IItem>> RefreshItems(CancellationToken token = default) => await _server.ListDirectory(FullName![(_server.FullName!.Length + 1)..]); public override async Task<IEnumerable<IItem>> RefreshItems(CancellationToken token = default) => await _server.ListDirectory(this, FullName![(_server.FullName!.Length + 1)..]);
public override Task Rename(string newName) public override Task Rename(string newName)
{ {

View File

@@ -34,7 +34,7 @@ namespace FileTime.Providers.Sftp
CanDelete = SupportsDelete.True; CanDelete = SupportsDelete.True;
} }
public override async Task<IEnumerable<IItem>> RefreshItems(CancellationToken token = default) => await ListDirectory(""); public override async Task<IEnumerable<IItem>> RefreshItems(CancellationToken token = default) => await ListDirectory(this, "");
public override Task<IContainer> CloneAsync() => Task.FromResult((IContainer)this); public override Task<IContainer> CloneAsync() => Task.FromResult((IContainer)this);
@@ -149,7 +149,7 @@ namespace FileTime.Providers.Sftp
return true; return true;
} }
public async Task<IEnumerable<IItem>> ListDirectory(string path) public async Task<IEnumerable<IItem>> ListDirectory(IContainer parent, string path)
{ {
return await _sftpClientContext.RunWithSftpClientAsync(client => return await _sftpClientContext.RunWithSftpClientAsync(client =>
{ {
@@ -160,7 +160,7 @@ namespace FileTime.Providers.Sftp
{ {
if (file.IsDirectory) if (file.IsDirectory)
{ {
var container = new SftpFolder(Provider, this, this, file.Name); var container = new SftpFolder(Provider, this, parent, file.Name);
containers.Add(container); containers.Add(container);
} }
} }