Skip to content
代码片段 群组 项目
未验证 提交 61bdd639 编辑于 作者: WithLithum's avatar WithLithum
浏览文件

:label: 分离应用数据模型 (#1)

Completes #1
上级 c22fcd35
No related branches found
No related tags found
无相关合并请求
显示 45 个添加135 个删除
文件已移动
namespace NexusKrop.Mir.Models;
using Newtonsoft.Json;
using NexusKrop.Mir.Util;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
......@@ -13,14 +12,14 @@ using System.Threading.Tasks;
public class NewsArticle
{
[JsonProperty(Required = Required.Always)]
public string Title { get; set; }
public string Title { get; set; } = "";
[JsonProperty(Required = Required.Always)]
public string Description { get; set; }
public string Description { get; set; } = "";
[JsonProperty(Required = Required.DisallowNull)]
public string Markdown { get; set; }
public string Markdown { get; set; } = "";
[JsonProperty(Required = Required.DisallowNull)]
public string Newspage { get; set; }
public string Newspage { get; set; } = "";
}
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Newtonsoft.Json" Version="13.0.2" />
</ItemGroup>
</Project>
......@@ -3,18 +3,24 @@ Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.4.33213.308
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NexusKrop.Mir", "NexusKrop.Mir\NexusKrop.Mir.csproj", "{C9DB3BCD-540C-4ABC-B8F1-3D3093D9DD73}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NexusKrop.Mir", "NexusKrop.Mir\NexusKrop.Mir.csproj", "{C9DB3BCD-540C-4ABC-B8F1-3D3093D9DD73}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NexusKrop.Mir.Models", "NexusKrop.Mir.Models\NexusKrop.Mir.Models.csproj", "{2946309B-BAB6-48A4-BCC5-E26D1A20EC76}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Debug|ARM64 = Debug|ARM64
Debug|x64 = Debug|x64
Debug|x86 = Debug|x86
Release|Any CPU = Release|Any CPU
Release|ARM64 = Release|ARM64
Release|x64 = Release|x64
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{C9DB3BCD-540C-4ABC-B8F1-3D3093D9DD73}.Debug|Any CPU.ActiveCfg = Debug|x64
{C9DB3BCD-540C-4ABC-B8F1-3D3093D9DD73}.Debug|Any CPU.Build.0 = Debug|x64
{C9DB3BCD-540C-4ABC-B8F1-3D3093D9DD73}.Debug|ARM64.ActiveCfg = Debug|ARM64
{C9DB3BCD-540C-4ABC-B8F1-3D3093D9DD73}.Debug|ARM64.Build.0 = Debug|ARM64
{C9DB3BCD-540C-4ABC-B8F1-3D3093D9DD73}.Debug|ARM64.Deploy.0 = Debug|ARM64
......@@ -24,6 +30,8 @@ Global
{C9DB3BCD-540C-4ABC-B8F1-3D3093D9DD73}.Debug|x86.ActiveCfg = Debug|x86
{C9DB3BCD-540C-4ABC-B8F1-3D3093D9DD73}.Debug|x86.Build.0 = Debug|x86
{C9DB3BCD-540C-4ABC-B8F1-3D3093D9DD73}.Debug|x86.Deploy.0 = Debug|x86
{C9DB3BCD-540C-4ABC-B8F1-3D3093D9DD73}.Release|Any CPU.ActiveCfg = Release|x64
{C9DB3BCD-540C-4ABC-B8F1-3D3093D9DD73}.Release|Any CPU.Build.0 = Release|x64
{C9DB3BCD-540C-4ABC-B8F1-3D3093D9DD73}.Release|ARM64.ActiveCfg = Release|ARM64
{C9DB3BCD-540C-4ABC-B8F1-3D3093D9DD73}.Release|ARM64.Build.0 = Release|ARM64
{C9DB3BCD-540C-4ABC-B8F1-3D3093D9DD73}.Release|ARM64.Deploy.0 = Release|ARM64
......@@ -33,6 +41,22 @@ Global
{C9DB3BCD-540C-4ABC-B8F1-3D3093D9DD73}.Release|x86.ActiveCfg = Release|x86
{C9DB3BCD-540C-4ABC-B8F1-3D3093D9DD73}.Release|x86.Build.0 = Release|x86
{C9DB3BCD-540C-4ABC-B8F1-3D3093D9DD73}.Release|x86.Deploy.0 = Release|x86
{2946309B-BAB6-48A4-BCC5-E26D1A20EC76}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{2946309B-BAB6-48A4-BCC5-E26D1A20EC76}.Debug|Any CPU.Build.0 = Debug|Any CPU
{2946309B-BAB6-48A4-BCC5-E26D1A20EC76}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{2946309B-BAB6-48A4-BCC5-E26D1A20EC76}.Debug|ARM64.Build.0 = Debug|Any CPU
{2946309B-BAB6-48A4-BCC5-E26D1A20EC76}.Debug|x64.ActiveCfg = Debug|Any CPU
{2946309B-BAB6-48A4-BCC5-E26D1A20EC76}.Debug|x64.Build.0 = Debug|Any CPU
{2946309B-BAB6-48A4-BCC5-E26D1A20EC76}.Debug|x86.ActiveCfg = Debug|Any CPU
{2946309B-BAB6-48A4-BCC5-E26D1A20EC76}.Debug|x86.Build.0 = Debug|Any CPU
{2946309B-BAB6-48A4-BCC5-E26D1A20EC76}.Release|Any CPU.ActiveCfg = Release|Any CPU
{2946309B-BAB6-48A4-BCC5-E26D1A20EC76}.Release|Any CPU.Build.0 = Release|Any CPU
{2946309B-BAB6-48A4-BCC5-E26D1A20EC76}.Release|ARM64.ActiveCfg = Release|Any CPU
{2946309B-BAB6-48A4-BCC5-E26D1A20EC76}.Release|ARM64.Build.0 = Release|Any CPU
{2946309B-BAB6-48A4-BCC5-E26D1A20EC76}.Release|x64.ActiveCfg = Release|Any CPU
{2946309B-BAB6-48A4-BCC5-E26D1A20EC76}.Release|x64.Build.0 = Release|Any CPU
{2946309B-BAB6-48A4-BCC5-E26D1A20EC76}.Release|x86.ActiveCfg = Release|Any CPU
{2946309B-BAB6-48A4-BCC5-E26D1A20EC76}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
......
......@@ -71,6 +71,9 @@
<Folder Include="Controls\" />
<Folder Include="Models\Collections\" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\NexusKrop.Mir.Models\NexusKrop.Mir.Models.csproj" />
</ItemGroup>
<ItemGroup>
<Compile Update="Resources\AppResources.Designer.cs">
<DesignTime>True</DesignTime>
......
namespace NexusKrop.Mir.Util;
using Microsoft.UI.Xaml;
using Newtonsoft.Json;
using NexusKrop.Mir.Models;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
internal class AppMetadataHelper
{
public static AppMetadataHelper Instance { get; } = new();
public ObservableCollection<FlipItem> FlipItems { get; } = new();
public ObservableCollection<ActivityPush> CommunityFeed { get; } = new();
public ObservableCollection<ActivityPush> OfficialFeed { get; } = new();
public const string METADATA_PATH = "http://localhost:8080/app.json";
public async Task InitializeAsync(UIElement element)
{
if (FlipItems.Count == 0)
{
await RefreshAsync(element);
}
}
public async Task RefreshAsync(UIElement element)
{
var articles = await GetArticlesAsync();
FlipItems.Clear();
foreach (var article in articles.FlipItems)
{
FlipItems.Add(article);
}
CommunityFeed.Clear();
foreach (var feed in articles.CommunityActivity)
{
CommunityFeed.Add(feed);
}
OfficialFeed.Clear();
foreach (var feed in articles.NexusKropActivity)
{
OfficialFeed.Add(feed);
}
}
internal static async Task<AppMetadata> GetArticlesAsync()
{
try
{
using var stream = new JsonTextReader(new StreamReader(await WebUtil.HTTP_CLIENT.GetStreamAsync(METADATA_PATH)));
return await Task.Run(() => WebUtil.SERILAIZER.Deserialize<AppMetadata>(stream));
}
catch
{
throw;
}
}
}
namespace NexusKrop.Mir.Util;
using Microsoft.UI.Xaml;
using Newtonsoft.Json;
using NexusKrop.Mir.Models;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.IO;
using System.Linq;
using System.Text;
using System.Text.Json;
using System.Threading.Tasks;
using Windows.UI.Core;
public class NewsHelper
{
public static NewsHelper Instance { get; } = new();
public ObservableCollection<NewsArticle> NewsArticles { get; } = new();
public const string ARTICLE_PATH = "http://localhost:8080/test.json";
public async Task InitializeAsync(UIElement element)
{
if (NewsArticles.Count == 0)
{
await RefreshAsync(element);
}
}
public async Task RefreshAsync(UIElement element)
{
var articles = await GetArticlesAsync();
NewsArticles.Clear();
foreach (var article in articles)
{
NewsArticles.Add(article);
}
}
internal static async Task<NewsArticle[]> GetArticlesAsync()
{
try
{
using var stream = new JsonTextReader(new StreamReader(await WebUtil.HTTP_CLIENT.GetStreamAsync(ARTICLE_PATH)));
return await Task.Run(() => WebUtil.SERILAIZER.Deserialize<NewsArticle[]>(stream));
}
catch
{
throw;
}
}
}
0% 加载中 .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册