diff --git a/FeverClient.cs b/FeverClient.cs index 40b1d55..4e2ba88 100644 --- a/FeverClient.cs +++ b/FeverClient.cs @@ -1,8 +1,8 @@ -using System.Text.Json; -using ChrisKaczor.FeverClient.Converters; +using ChrisKaczor.FeverClient.Converters; using ChrisKaczor.FeverClient.Models; using ChrisKaczor.FeverClient.Responses; using RestSharp; +using System.Text.Json; namespace ChrisKaczor.FeverClient; @@ -80,24 +80,27 @@ public class FeverClient return feedItemsResponse.FeedItems; } - public async Task> GetAllFeedItems() + public async IAsyncEnumerable> GetAllFeedItems() { - var allFeedItems = new List(); + var maxId = 1; - var response = (await GetFeedItems()).ToList(); - - while (response.Count > 0) + do { - allFeedItems.AddRange(response); + var response = await GetFeedItems(maxId); - response = (await GetFeedItems(response.Max(fi => fi.Id))).ToList(); - } + var feedItemList = response.ToArray(); - return allFeedItems; + yield return feedItemList; + + if (feedItemList.Length == 0) + yield break; + + maxId = feedItemList.Max(fi => fi.Id); + } while (true); } public async Task MarkFeedItemAsRead(int feedItemId) - { + { await PostRestRequest($"mark=item&as=read&id={feedItemId}"); } } \ No newline at end of file