diff --git a/src/Discord.Net.Core/Extensions/AsyncEnumerableExtensions.cs b/src/Discord.Net.Core/Extensions/AsyncEnumerableExtensions.cs index 345154f1d..dd16d2943 100644 --- a/src/Discord.Net.Core/Extensions/AsyncEnumerableExtensions.cs +++ b/src/Discord.Net.Core/Extensions/AsyncEnumerableExtensions.cs @@ -1,6 +1,5 @@ -using System.Collections.Generic; +using System.Collections.Generic; using System.Linq; -using System.Threading; using System.Threading.Tasks; namespace Discord @@ -20,45 +19,7 @@ namespace Discord public static IAsyncEnumerable Flatten(this IAsyncEnumerable> source) { - return new PagedCollectionEnumerator(source); - } - - internal class PagedCollectionEnumerator : IAsyncEnumerator, IAsyncEnumerable - { - readonly IAsyncEnumerator> _source; - IEnumerator _enumerator; - - public IAsyncEnumerator GetEnumerator() => this; - - internal PagedCollectionEnumerator(IAsyncEnumerable> source) - { - _source = source.GetEnumerator(); - } - - public T Current => _enumerator.Current; - - public void Dispose() - { - _enumerator?.Dispose(); - _source.Dispose(); - } - - public async Task MoveNext(CancellationToken cancellationToken) - { - cancellationToken.ThrowIfCancellationRequested(); - - if(!_enumerator?.MoveNext() ?? true) - { - if (!await _source.MoveNext(cancellationToken).ConfigureAwait(false)) - return false; - - _enumerator?.Dispose(); - _enumerator = _source.Current.GetEnumerator(); - return _enumerator.MoveNext(); - } - - return true; - } + return source.SelectMany(enumerable => enumerable.ToAsyncEnumerable()); } } }