2023-05-15 20:42:42 +02:00
|
|
|
using System;
|
|
|
|
using System.Collections.Generic;
|
|
|
|
using System.Linq;
|
2023-05-15 15:53:08 +02:00
|
|
|
using CodeHollow.FeedReader;
|
|
|
|
using MudBlazor;
|
|
|
|
using SharpRss.Models;
|
|
|
|
using ToolQit;
|
|
|
|
|
|
|
|
namespace WebSharpRSS.Models
|
|
|
|
{
|
2023-05-15 20:42:42 +02:00
|
|
|
public class TreeItemData
|
2023-05-15 15:53:08 +02:00
|
|
|
{
|
2023-05-15 20:42:42 +02:00
|
|
|
public TreeItemData(CategoryModel catModel)
|
2023-05-15 15:53:08 +02:00
|
|
|
{
|
|
|
|
CategoryModel = catModel;
|
2023-05-18 01:27:11 +02:00
|
|
|
//Feeds = CategoryModel.Feeds.Where(x => x.Base != null).Select(x => new TreeItemData(x)).ToHashSet();
|
2023-05-15 15:53:08 +02:00
|
|
|
Title = CategoryModel.Name;
|
|
|
|
Icon = Icons.Material.Filled.RssFeed;
|
|
|
|
}
|
|
|
|
|
2023-05-15 20:42:42 +02:00
|
|
|
public TreeItemData(FeedModel feedModel)
|
2023-05-15 15:53:08 +02:00
|
|
|
{
|
|
|
|
FeedModel = feedModel;
|
2023-05-18 01:27:11 +02:00
|
|
|
//Feed = FeedModel.Base;
|
2023-05-15 15:53:08 +02:00
|
|
|
Title = Feed.Title;
|
2023-05-15 20:42:42 +02:00
|
|
|
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-15 15:53:08 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
public readonly CategoryModel? CategoryModel;
|
|
|
|
public readonly FeedModel? FeedModel;
|
|
|
|
|
|
|
|
public string Title { get; set; } = string.Empty;
|
|
|
|
public bool IsSelected { get; set; }
|
|
|
|
public string? Icon { get; set; }
|
|
|
|
public string? FaviconUrl { get; set; }
|
2023-05-16 14:12:36 +02:00
|
|
|
|
2023-05-15 15:53:08 +02:00
|
|
|
// Category
|
2023-05-16 14:12:36 +02:00
|
|
|
public bool HasChild => Feeds != null;
|
2023-05-15 15:53:08 +02:00
|
|
|
public bool IsExpanded { get; set; }
|
2023-05-15 20:42:42 +02:00
|
|
|
public HashSet<TreeItemData>? Feeds { get; set; }
|
2023-05-15 15:53:08 +02:00
|
|
|
// Feed
|
|
|
|
public Feed? Feed { get; set; }
|
2023-05-16 14:12:36 +02:00
|
|
|
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-15 15:53:08 +02:00
|
|
|
}
|
|
|
|
}
|