Make GetAllFeedItems yield async

This commit is contained in:
2025-11-22 11:58:55 -05:00
parent e6316aaba2
commit 0f63b79493

View File

@@ -1,8 +1,8 @@
using System.Text.Json; using ChrisKaczor.FeverClient.Converters;
using ChrisKaczor.FeverClient.Converters;
using ChrisKaczor.FeverClient.Models; using ChrisKaczor.FeverClient.Models;
using ChrisKaczor.FeverClient.Responses; using ChrisKaczor.FeverClient.Responses;
using RestSharp; using RestSharp;
using System.Text.Json;
namespace ChrisKaczor.FeverClient; namespace ChrisKaczor.FeverClient;
@@ -80,24 +80,27 @@ public class FeverClient
return feedItemsResponse.FeedItems; return feedItemsResponse.FeedItems;
} }
public async Task<IEnumerable<FeedItem>> GetAllFeedItems() public async IAsyncEnumerable<IEnumerable<FeedItem>> GetAllFeedItems()
{ {
var allFeedItems = new List<FeedItem>(); var maxId = 1;
var response = (await GetFeedItems()).ToList(); do
while (response.Count > 0)
{ {
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) public async Task MarkFeedItemAsRead(int feedItemId)
{ {
await PostRestRequest<BaseResponse>($"mark=item&as=read&id={feedItemId}"); await PostRestRequest<BaseResponse>($"mark=item&as=read&id={feedItemId}");
} }
} }