Working on models

This commit is contained in:
Max 2023-05-20 00:35:43 +02:00
parent e4a0f4ce7d
commit 6d2fce5290
8 changed files with 29 additions and 39 deletions

View File

@ -1,12 +1,11 @@
using System; using System;
using CodeHollow.FeedReader;
namespace SharpRss.Models namespace SharpRss.Models
{ {
public class FeedModel public class FeedModel
{ {
public string FeedId { get; set; } public string FeedId { get; set; }
public string CategoryId { get; set; } public string GroupId { get; set; }
public string FeedType { get; set; } public string FeedType { get; set; }
public string FeedUrl { get; set; } public string FeedUrl { get; set; }
public string Description { get; set; } public string Description { get; set; }
@ -14,5 +13,7 @@ namespace SharpRss.Models
public string Copyright { get; set; } public string Copyright { get; set; }
public DateTime LastUpdated { get; set; } public DateTime LastUpdated { get; set; }
public string ImageUrl { get; set; } public string ImageUrl { get; set; }
public int TotalItems { get; set; }
public int TotalRead { get; set; }
} }
} }

View File

@ -1,19 +1,16 @@
using System; using System;
using ToolQit;
namespace SharpRss.Models namespace SharpRss.Models
{ {
/// <summary>
/// To store and load data from file/database
/// </summary>
public class GroupModel public class GroupModel
{ {
/*public GroupModel() public GroupModel(string name)
{ {
HexColor = $"#{_random.Next(0x1000000):X6}"; Name = name;
HexColor = Utilities.GenerateRandomHexColor();
Id = Guid.NewGuid().ToString(); Id = Guid.NewGuid().ToString();
} }
private readonly Random _random = new Random();*/
public string Name { get; set; } public string Name { get; set; }
public string HexColor { get; set; } public string HexColor { get; set; }
public string Icon { get; set; } public string Icon { get; set; }

View File

@ -47,7 +47,7 @@ namespace SharpRss.Services
_sqlConn.Open(); _sqlConn.Open();
foreach (var feedModel in feeds) foreach (var feedModel in feeds)
{ {
await _sqlConn.QueryAsync("INSERT OR REPLACE INTO feed_data(url, feed_id, category_id) VALUES(@url, @feedId, @categoryId) ON CONFLICT(url) DO UPDATE SET category_id=@categoryId", new { url = feedModel.FeedUrl, feedId = feedModel.FeedId, categoryId = feedModel.CategoryId }); await _sqlConn.QueryAsync("INSERT OR REPLACE INTO feed_data(url, feed_id, category_id) VALUES(@url, @feedId, @categoryId) ON CONFLICT(url) DO UPDATE SET category_id=@categoryId", new { url = feedModel.FeedUrl, feedId = feedModel.FeedId, categoryId = feedModel.GroupId });
} }
_sqlConn.Close(); _sqlConn.Close();
return result; return result;

@ -1 +1 @@
Subproject commit b2a5173c7ffc21e83eb02c96b6e70434d7396d58 Subproject commit 0f3a3fb0f9145aad31a44eb25159d0f2a5a1c7fd

View File

@ -4,7 +4,7 @@ namespace WebSharpRSS.Models
{ {
public class FeedStateContainer public class FeedStateContainer
{ {
public TreeItemData? TreeItem { get; set; } /*public TreeItemData? TreeItem { get; set; }
public event Action? StateChanged; public event Action? StateChanged;
public void SetValue(TreeItemData treeItemSet) public void SetValue(TreeItemData treeItemSet)
{ {
@ -12,6 +12,6 @@ namespace WebSharpRSS.Models
Invoke(); Invoke();
} }
private void Invoke() => StateChanged?.Invoke(); private void Invoke() => StateChanged?.Invoke();*/
} }
} }

View File

@ -1,12 +1,5 @@
using System;
using System.Collections.Generic;
using System.Linq;
using CodeHollow.FeedReader;
using MudBlazor;
using Serilog;
using SharpRss.Models; using SharpRss.Models;
using SharpRss.Services; using SharpRss.Services;
using ToolQit;
namespace WebSharpRSS.Models namespace WebSharpRSS.Models
{ {
@ -30,7 +23,7 @@ namespace WebSharpRSS.Models
private readonly RssService _service; private readonly RssService _service;
public readonly GroupModel? CategoryModel; public readonly GroupModel? CategoryModel;
public readonly FeedModel? FeedModel; public readonly FeedModel? FeedModel;
private HashSet<FeedModel> _feedModels; //private HashSet<FeedModel> _feedModels;
public string Title { get; set; } = string.Empty; public string Title { get; set; } = string.Empty;
public bool IsSelected { get; set; } public bool IsSelected { get; set; }
@ -38,12 +31,12 @@ namespace WebSharpRSS.Models
public string? FaviconUrl { get; set; } public string? FaviconUrl { get; set; }
// Category // Category
public bool HasChild => _feedModels != null && _feedModels.Any(); public bool HasChild { get; set; }
public bool IsExpanded { get; set; } public bool IsExpanded { get; set; }
public HashSet<TreeItemData>? Feeds { get; set; } //public HashSet<TreeItemData>? Feeds { get; set; }
// Feed // Feed
public Feed? Feed { get; private set; } //public Feed? Feed { get; private set; }
public int FeeditemCount /*public int FeeditemCount
{ {
get get
{ {
@ -61,17 +54,17 @@ namespace WebSharpRSS.Models
return Feed.Items.Count; return Feed.Items.Count;
return 0; return 0;
} }
} }*/
private async void Initialize() private async void Initialize()
{ {
if (CategoryModel != null) /*if (CategoryModel != null)
{ {
Title = CategoryModel.Name; Title = CategoryModel.Name;
Icon = Icons.Material.Filled.Category; Icon = Icons.Material.Filled.Category;
/*_feedModels = await _service.GetFeedsAsync(CategoryModel); /*_feedModels = await _service.GetFeedsAsync(CategoryModel);
if (_feedModels.Any()) if (_feedModels.Any())
Feeds = _feedModels.Select(x => new TreeItemData(x, _service)).OrderBy(x => x.Title).ToHashSet();*/ Feeds = _feedModels.Select(x => new TreeItemData(x, _service)).OrderBy(x => x.Title).ToHashSet();#1#
} }
if (FeedModel != null) if (FeedModel != null)
@ -90,7 +83,7 @@ namespace WebSharpRSS.Models
Title = Feed.Title; Title = Feed.Title;
string faviconAddress = Feed.Link.Remove(Feed.Link.IndexOf("http", StringComparison.Ordinal), Feed.Link.IndexOf("://", StringComparison.Ordinal) + 3); 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); FaviconUrl = string.Format(Caretaker.Settings["Paths"].GetString("FaviconResolveUrl"), faviconAddress);
} }*/
} }
} }
} }

View File

@ -35,7 +35,7 @@
protected override void OnInitialized() protected override void OnInitialized()
{ {
UpdateFeeds(); UpdateFeeds();
_stateContainer.StateChanged += FeedsChanged; //_stateContainer.StateChanged += FeedsChanged;
} }
private void FeedsChanged() private void FeedsChanged()
{ {

View File

@ -10,8 +10,8 @@
@inject RssService _rssService @inject RssService _rssService
<MudStack Spacing="2"> <MudStack Spacing="2">
<MudTreeView Items="_guideItems" @bind-SelectedValue="SelectedItem" Hover="true"> @*<MudTreeView Items="_guideItems" @bind-SelectedValue="SelectedItem" Hover="true">
@*<ItemTemplate> $1$<ItemTemplate>
<MudTreeViewItem @bind-Expanded="@context.IsExpanded" Items="@context.Feeds" Value="@context" CanExpand="@context.HasChild" @onclick="ItemClicked"> <MudTreeViewItem @bind-Expanded="@context.IsExpanded" Items="@context.Feeds" Value="@context" CanExpand="@context.HasChild" @onclick="ItemClicked">
<Content> <Content>
<div style="display: grid; grid-template-columns: 1fr auto; align-items: center; width: 100%"> <div style="display: grid; grid-template-columns: 1fr auto; align-items: center; width: 100%">
@ -33,14 +33,14 @@
</div> </div>
</Content> </Content>
</MudTreeViewItem> </MudTreeViewItem>
</ItemTemplate>*@ </ItemTemplate>#1#
</MudTreeView> </MudTreeView>*@
</MudStack> </MudStack>
@code { @code {
private MudTheme Theme = new MudTheme(); private MudTheme Theme = new MudTheme();
private readonly HashSet<TreeItemData> _guideItems = new HashSet<TreeItemData>(); //private readonly HashSet<TreeItemData> _guideItems = new HashSet<TreeItemData>();
private TreeItemData? _selectedItem; /*private TreeItemData? _selectedItem;
private TreeItemData? SelectedItem private TreeItemData? SelectedItem
{ {
get => _selectedItem; get => _selectedItem;
@ -49,11 +49,10 @@
_selectedItem = value; _selectedItem = value;
ItemClicked(); ItemClicked();
} }
} }*/
private void ItemClicked() private void ItemClicked()
{ {
if (SelectedItem == null) return;
_stateContainer.SetValue(SelectedItem);
} }
protected override async void OnInitialized() protected override async void OnInitialized()
{ {