private async Task<IReadOnlyList<IUnixFileSystemEntry>> ConvertToUnixFileSystemEntries(string parentId, IEnumerable<Item> items, CancellationToken cancellationToken)
{
var result = new List<IUnixFileSystemEntry>();
await _uploadsLock.WaitAsync(cancellationToken);
try
{
var resultItems = items
.Where(x => x.Deleted == null)
.Select(ConvertToUnixFileSystemEntryLocked)
.ToList();
var foundNames = new HashSet<string>(resultItems.Select(x => x.Name), StringComparer.OrdinalIgnoreCase);
result.AddRange(resultItems);
result.AddRange(
_uploads.Values
.Where(x => x.ParentId == parentId && !foundNames.Contains(x.Name))
.Select(x => new OneDriveFileEntry(this, x.Item, x.FileSize)));
}
finally
{
_uploadsLock.Release();
}
return result;
}
}