SharpRSS/WebSharpRSS/Models/TreeItemData.cs

89 lines
2.9 KiB
C#
Raw Normal View History

using SharpRss.Models;
using SharpRss.Services;
namespace WebSharpRSS.Models
{
2023-05-15 20:42:42 +02:00
public class TreeItemData
{
2023-05-20 00:04:45 +02:00
public TreeItemData(GroupModel catModel, RssService rssService)
{
_service = rssService;
CategoryModel = catModel;
Initialize();
}
public TreeItemData(FeedModel feedModel, RssService rssService)
{
_service = rssService;
FeedModel = feedModel;
Initialize();
}
private readonly RssService _service;
2023-05-20 00:04:45 +02:00
public readonly GroupModel? CategoryModel;
public readonly FeedModel? FeedModel;
2023-05-20 00:35:43 +02:00
//private HashSet<FeedModel> _feedModels;
public string Title { get; set; } = string.Empty;
public bool IsSelected { get; set; }
public string? Icon { get; set; }
public string? FaviconUrl { get; set; }
// Category
2023-05-20 00:35:43 +02:00
public bool HasChild { get; set; }
public bool IsExpanded { get; set; }
2023-05-20 00:35:43 +02:00
//public HashSet<TreeItemData>? Feeds { get; set; }
// Feed
2023-05-20 00:35:43 +02:00
//public Feed? Feed { get; private set; }
/*public int FeeditemCount
{
get
{
if (CategoryModel != null && Feeds != null)
{
int feedsCount = 0;
foreach (var item in Feeds)
{
if (item.Feed != null)
feedsCount += item.FeeditemCount;
}
return feedsCount;
}
else if (Feed != null)
return Feed.Items.Count;
return 0;
}
2023-05-20 00:35:43 +02:00
}*/
private async void Initialize()
{
2023-05-20 00:35:43 +02:00
/*if (CategoryModel != null)
{
Title = CategoryModel.Name;
Icon = Icons.Material.Filled.Category;
2023-05-20 00:04:45 +02:00
/*_feedModels = await _service.GetFeedsAsync(CategoryModel);
if (_feedModels.Any())
2023-05-20 00:35:43 +02:00
Feeds = _feedModels.Select(x => new TreeItemData(x, _service)).OrderBy(x => x.Title).ToHashSet();#1#
}
if (FeedModel != null)
{
try
{
2023-05-20 00:04:45 +02:00
//Feed = await _service.GetFeedAsync(FeedModel.FeedUrl);
}
catch (Exception e)
{
Log.Error(e, "Error fetching feed: {FeedUrl}", FeedModel.FeedUrl);
Feed = null;
return;
}
Icon = Icons.Material.Filled.RssFeed;
Title = Feed.Title;
string faviconAddress = Feed.Link.Remove(Feed.Link.IndexOf("http", StringComparison.Ordinal), Feed.Link.IndexOf("://", StringComparison.Ordinal) + 3);
FaviconUrl = string.Format(Caretaker.Settings["Paths"].GetString("FaviconResolveUrl"), faviconAddress);
2023-05-20 00:35:43 +02:00
}*/
}
}
}