AbstractFolder refactor

This commit is contained in:
2022-02-18 16:31:13 +01:00
parent 5072d828e6
commit 83b86f2b50
9 changed files with 84 additions and 364 deletions

View File

@@ -2,8 +2,8 @@ namespace FileTime.Core.Models
{
public enum SupportsDelete
{
False,
True,
HardDeleteOnly,
False
}
}

View File

@@ -46,7 +46,7 @@ namespace FileTime.Core.Providers
Exceptions = _exceptions.AsReadOnly();
}
public abstract Task<bool> CanOpenAsync();
public virtual Task<bool> CanOpenAsync() => Task.FromResult(_exceptions.Count == 0);
public abstract Task<IContainer> CloneAsync();
@@ -61,6 +61,7 @@ namespace FileTime.Core.Providers
_items = null;
_containers = null;
_elements = null;
IsLoaded = false;
IsDestroyed = true;
Refreshed = new AsyncEventHandler();
}
@@ -93,6 +94,7 @@ namespace FileTime.Core.Providers
public virtual async Task RefreshAsync(CancellationToken token = default)
{
_exceptions.Clear();
var containers = new List<IContainer>();
var elements = new List<IElement>();
foreach (var item in await RefreshItems(token))
@@ -118,8 +120,10 @@ namespace FileTime.Core.Providers
_containers = containers.OrderBy(c => c.Name).ToList().AsReadOnly();
_elements = elements.OrderBy(e => e.Name).ToList().AsReadOnly();
_items = _containers.Cast<IItem>().Concat(_elements).ToList().AsReadOnly();
IsLoaded = true;
if (Refreshed != null) await Refreshed.InvokeAsync(this, AsyncEventArgs.Empty, token);
}
public abstract Task<IEnumerable<IItem>> RefreshItems(CancellationToken token = default);
public abstract Task Rename(string newName);
@@ -129,6 +133,9 @@ namespace FileTime.Core.Providers
_items = null;
_containers = null;
_elements = null;
IsLoaded = false;
}
protected void AddException(Exception e) => _exceptions.Add(e);
}
}

View File

@@ -1,5 +1,3 @@
using System;
using AsyncEvent;
using FileTime.Core.Models;