Skip to content

Commit 16722ca

Browse files
committed
调整代码结构,处理离线错误
1 parent d384324 commit 16722ca

31 files changed

Lines changed: 294 additions & 252 deletions

src/App/Pages/SpecialColumnPage.xaml

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
55
xmlns:controls="using:Richasy.Bili.App.Controls"
66
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
7+
xmlns:enums="using:Richasy.Bili.Models.Enums"
78
xmlns:loc="using:Richasy.Bili.Locator.Uwp"
89
xmlns:local="using:Richasy.Bili.App.Pages"
910
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
@@ -117,6 +118,24 @@
117118
MinWideItemHeight="272"
118119
RequestLoadMore="OnArticleViewRequestLoadMoreAsync"
119120
Visibility="{x:Bind ViewModel.CurrentCategory.IsInitializeLoading, Mode=OneWay, Converter={StaticResource BoolToVisibilityReverseConverter}}">
121+
<controls:VerticalRepeaterView.AdditionalContent>
122+
<Grid>
123+
<ComboBox
124+
x:Name="ArticleSortComboBox"
125+
Style="{StaticResource DefaultComboBoxStyle}"
126+
ItemsSource="{x:Bind ViewModel.CurrentCategory.SortTypeCollection, Mode=OneWay}"
127+
PlaceholderText="{loc:LocaleLocator Name=SelectSortType}"
128+
SelectedItem="{x:Bind ViewModel.CurrentCategory.CurrentSortType, Mode=TwoWay}"
129+
SelectionChanged="OnArticleSortComboBoxSlectionChanged"
130+
Visibility="{x:Bind ViewModel.CurrentCategory.IsRecommend, Mode=OneWay, Converter={StaticResource BoolToVisibilityReverseConverter}}">
131+
<ComboBox.ItemTemplate>
132+
<DataTemplate x:DataType="enums:ArticleSortType">
133+
<TextBlock Text="{x:Bind Converter={StaticResource SortTypeTextConverter}}" />
134+
</DataTemplate>
135+
</ComboBox.ItemTemplate>
136+
</ComboBox>
137+
</Grid>
138+
</controls:VerticalRepeaterView.AdditionalContent>
120139
<controls:VerticalRepeaterView.ItemTemplate>
121140
<DataTemplate x:DataType="uwp:ArticleViewModel">
122141
<controls:ArticleItem ViewModel="{x:Bind}" />

src/App/Pages/SpecialColumnPage.xaml.cs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
// Copyright (c) Richasy. All rights reserved.
22

3+
using Richasy.Bili.Models.Enums;
34
using Richasy.Bili.ViewModels.Uwp;
45
using Windows.UI.Xaml;
56
using Windows.UI.Xaml.Controls;
@@ -62,5 +63,14 @@ private async void OnRefreshButtonClickAsync(object sender, RoutedEventArgs e)
6263
await ViewModel.CurrentCategory.InitializeRequestAsync();
6364
}
6465
}
66+
67+
private void OnArticleSortComboBoxSlectionChanged(object sender, SelectionChangedEventArgs e)
68+
{
69+
if (ArticleSortComboBox.SelectedItem != null)
70+
{
71+
var item = (ArticleSortType)ArticleSortComboBox.SelectedItem;
72+
ViewModel.CurrentCategory.CurrentSortType = item;
73+
}
74+
}
6575
}
6676
}

src/App/Resources/Converter/SortTypeTextConverter.cs

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,32 @@ public object Convert(object value, Type targetType, object parameter, string la
4444
break;
4545
}
4646
}
47+
else if (value is ArticleSortType ast)
48+
{
49+
switch (ast)
50+
{
51+
case ArticleSortType.Default:
52+
result = resourceToolkit.GetLocaleString(LanguageNames.SortByDefault);
53+
break;
54+
case ArticleSortType.Newest:
55+
result = resourceToolkit.GetLocaleString(LanguageNames.SortByNewest);
56+
break;
57+
case ArticleSortType.Read:
58+
result = resourceToolkit.GetLocaleString(LanguageNames.SortByRead);
59+
break;
60+
case ArticleSortType.Reply:
61+
result = resourceToolkit.GetLocaleString(LanguageNames.SortByReply);
62+
break;
63+
case ArticleSortType.Like:
64+
result = resourceToolkit.GetLocaleString(LanguageNames.SortByLike);
65+
break;
66+
case ArticleSortType.Favorite:
67+
result = resourceToolkit.GetLocaleString(LanguageNames.SortByFavorite);
68+
break;
69+
default:
70+
break;
71+
}
72+
}
4773

4874
return result;
4975
}

src/App/Resources/Strings/zh-CN/Resources.resw

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -252,6 +252,12 @@
252252
<data name="Refresh" xml:space="preserve">
253253
<value>刷新</value>
254254
</data>
255+
<data name="RequestArticleListFailed" xml:space="preserve">
256+
<value>文章列表请求失败</value>
257+
</data>
258+
<data name="RequestLiveFailed" xml:space="preserve">
259+
<value>直播数据请求失败</value>
260+
</data>
255261
<data name="RequestPopularFailed" xml:space="preserve">
256262
<value>热门视频请求失败</value>
257263
</data>
@@ -303,12 +309,18 @@
303309
<data name="SortByFavorite" xml:space="preserve">
304310
<value>收藏最多</value>
305311
</data>
312+
<data name="SortByLike" xml:space="preserve">
313+
<value>点赞最多</value>
314+
</data>
306315
<data name="SortByNewest" xml:space="preserve">
307316
<value>最新视频</value>
308317
</data>
309318
<data name="SortByPlay" xml:space="preserve">
310319
<value>播放最多</value>
311320
</data>
321+
<data name="SortByRead" xml:space="preserve">
322+
<value>阅读最多</value>
323+
</data>
312324
<data name="SortByReply" xml:space="preserve">
313325
<value>评论最多</value>
314326
</data>

src/Controller/Controller.Uwp/BiliController.Live.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ public async Task RequestLiveFeedsAsync(int pageNumber)
2020
{
2121
try
2222
{
23+
ThrowWhenNetworkUnavaliable();
2324
var data = await _liveProvider.GetLiveFeedsAsync(pageNumber);
2425
if (pageNumber == 1)
2526
{

src/Controller/Controller.Uwp/BiliController.Partition.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ public async Task<List<Partition>> RequestPartitionIndexAsync()
3333

3434
if (needRequest)
3535
{
36+
ThrowWhenNetworkUnavaliable();
3637
var webResult = await _partitionProvider.GetPartitionIndexAsync();
3738
data = webResult.ToList();
3839
var localCache = new LocalCache<List<Partition>>(DateTimeOffset.Now.AddDays(1), data);
@@ -64,6 +65,7 @@ public async Task RequestSubPartitionDataAsync(int subPartitionId, bool isRecomm
6465
{
6566
try
6667
{
68+
ThrowWhenNetworkUnavaliable();
6769
var requestDateTime = DateTimeOffset.Now;
6870
var data = await _partitionProvider.GetSubPartitionDataAsync(subPartitionId, isRecommend, offsetId, sortType, pageNumber);
6971
pageNumber = !isRecommend && sortType != VideoSortType.Default ? pageNumber + 1 : 1;

src/Controller/Controller.Uwp/BiliController.Popular.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ public async Task RequestPopularCardsAsync(int offsetIndex)
1919
{
2020
try
2121
{
22+
ThrowWhenNetworkUnavaliable();
2223
var cards = await _popularProvider.GetPopularDetailAsync(offsetIndex);
2324
cards = cards.Where(p =>
2425
p.ItemCase == Bilibili.App.Card.V1.Card.ItemOneofCase.SmallCoverV5

src/Controller/Controller.Uwp/BiliController.Rank.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ public partial class BiliController
1818
/// <returns>排行榜信息.</returns>
1919
public async Task<List<RankItem>> GetRankAsync(int partitionId)
2020
{
21+
ThrowWhenNetworkUnavaliable();
2122
var rank = await _rankProvider.GetRankDetailAsync(partitionId);
2223
return rank;
2324
}

src/Controller/Controller.Uwp/BiliController.Recommend.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ public async Task RequestRecommendCardsAsync(int offsetIndex)
2020
{
2121
try
2222
{
23+
ThrowWhenNetworkUnavaliable();
2324
var cards = await _homeProvider.RequestRecommendCardsAsync(offsetIndex);
2425
var result = cards.Where(p => p.CardGoto == Av || p.CardGoto == Bangumi || p.CardGoto == Pgc).ToList();
2526

src/Controller/Controller.Uwp/BiliController.SpecialColumn.cs

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
using Richasy.Bili.Models.App.Args;
77
using Richasy.Bili.Models.App.Other;
88
using Richasy.Bili.Models.BiliBili;
9+
using Richasy.Bili.Models.Enums;
910
using static Richasy.Bili.Models.App.Constants.ControllerConstants;
1011

1112
namespace Richasy.Bili.Controller.Uwp
@@ -31,6 +32,7 @@ public async Task<List<ArticleCategory>> GetSpecialColumnCategoriesAsync()
3132

3233
if (needRequest)
3334
{
35+
ThrowWhenNetworkUnavaliable();
3436
data = await _documentaryProvider.GetCategoriesAsync();
3537
var localCache = new LocalCache<List<ArticleCategory>>(DateTimeOffset.Now.AddDays(1), data);
3638
await _fileToolkit.WriteLocalDataAsync(Names.DocumentaryCategories, localCache, Names.ServerFolder);
@@ -48,12 +50,14 @@ public async Task<List<ArticleCategory>> GetSpecialColumnCategoriesAsync()
4850
/// </summary>
4951
/// <param name="categoryId">分类Id.</param>
5052
/// <param name="pageNumber">页码.</param>
53+
/// <param name="sortType">排序类型.</param>
5154
/// <returns><see cref="Task"/>.</returns>
52-
public async Task RequestCategoryArticlesAsync(int categoryId, int pageNumber)
55+
public async Task RequestCategoryArticlesAsync(int categoryId, int pageNumber, ArticleSortType sortType)
5356
{
5457
try
5558
{
56-
var data = await _documentaryProvider.GetCategoryArticlesAsync(categoryId, pageNumber);
59+
ThrowWhenNetworkUnavaliable();
60+
var data = await _documentaryProvider.GetCategoryArticlesAsync(categoryId, pageNumber, sortType);
5761
var iterationArgs = SpecialColumnArticleIterationEventArgs.Create(data, categoryId, pageNumber + 1);
5862
SpecialColumnArticleIteration?.Invoke(this, iterationArgs);
5963
}
@@ -75,6 +79,7 @@ public async Task RequestRecommendArticlesAsync(int pageNumber)
7579
{
7680
try
7781
{
82+
ThrowWhenNetworkUnavaliable();
7883
var data = await _documentaryProvider.GetRecommendArticlesAsync(pageNumber);
7984
var additionalArgs = SpecialColumnAdditionalDataChangedEventArgs.Create(data);
8085
if (additionalArgs != null && pageNumber == 1)

0 commit comments

Comments
 (0)