SharpRSS/SharpRss/Models/FeedModel.cs

41 lines
1.1 KiB
C#
Raw Normal View History

using CodeHollow.FeedReader;
2023-05-12 15:48:14 +02:00
namespace SharpRss.Models
{
public class FeedModel
2023-05-12 15:48:14 +02:00
{
2023-05-12 23:58:49 +02:00
public FeedModel(string rssUrl)
{
_rssUrl = rssUrl;
_fetchTask = FetchAsync();
2023-05-12 23:58:49 +02:00
}
private Task _fetchTask;
2023-05-12 23:58:49 +02:00
private async Task FetchAsync()
2023-05-12 23:58:49 +02:00
{
IsReady = false;
_feed = await FeedCache.GetFeed(_rssUrl);
2023-05-12 23:58:49 +02:00
IsReady = true;
}
private Feed? _feed;
public Feed Base {
get
{
if (_feed == null)
{
if (_fetchTask.IsFaulted)
{ IsFaulted = _fetchTask.IsFaulted; return new Feed(); }
if (!(_fetchTask.Status == TaskStatus.Running || _fetchTask.Status == TaskStatus.WaitingForActivation))
_fetchTask.Start();
_fetchTask.Wait();
}
return _feed ?? new Feed();
}
}
public bool IsFaulted { get; private set; }
public bool IsReady { get; private set; }
private readonly string _rssUrl;
2023-05-12 15:48:14 +02:00
}
}