SharpRSS/SharpRss/Models/FeedModel.cs

41 lines
1.1 KiB
C#

using CodeHollow.FeedReader;
namespace SharpRss.Models
{
public class FeedModel
{
public FeedModel(string rssUrl)
{
_rssUrl = rssUrl;
_fetchTask = FetchAsync();
}
private Task _fetchTask;
private async Task FetchAsync()
{
IsReady = false;
_feed = await FeedCache.GetFeed(_rssUrl);
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;
}
}