From a2ebfee5a2bb3eace089f8bca4cfd513697436d1 Mon Sep 17 00:00:00 2001 From: Clawd Date: Thu, 23 Apr 2026 19:48:39 +0800 Subject: [PATCH 1/3] =?UTF-8?q?feat:=20=E8=B6=8B=E5=8A=BF=E9=A1=B5?= =?UTF-8?q?=E5=A2=9E=E5=BC=BA=20-=20RSS=E6=95=B0=E6=8D=AE=E6=BA=90?= =?UTF-8?q?=E3=80=81=E6=8F=8F=E8=BF=B0=E5=AD=97=E6=AE=B5=E3=80=81README?= =?UTF-8?q?=E9=A2=84=E8=A7=88=E3=80=81=E6=97=B6=E9=97=B4=E8=8C=83=E5=9B=B4?= =?UTF-8?q?=E7=AD=9B=E9=80=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. 趋势频道名称从'热门仓库(Trending)'改为'趋势(Trending)' 2. 趋势页数据源改为 GitHubTrendingRSS,支持今日/本周/本月筛选 - 今日: https://mshibanami.github.io/GitHubTrendingRSS/daily/all.xml - 本周: https://mshibanami.github.io/GitHubTrendingRSS/weekly/all.xml - 本月: https://mshibanami.github.io/GitHubTrendingRSS/monthly/all.xml 3. RSS描述字段解析:剥离XML/HTML标签,仅显示纯文本描述 4. 通过GitHub API补充RSS缺失字段(id, language, description, topics等) 5. 仓库卡片已支持描述字段显示(原始描述+AI分析摘要) 6. 点击仓库卡片可预览README.md,复用仓库页的Markdown渲染组件 7. 新增TrendingTimeRange类型和store状态管理 --- src/components/DiscoveryView.tsx | 29 +++++- src/services/githubApi.ts | 148 ++++++++++++++++++++++++++----- src/store/useAppStore.ts | 11 ++- src/types/index.ts | 3 + 4 files changed, 162 insertions(+), 29 deletions(-) diff --git a/src/components/DiscoveryView.tsx b/src/components/DiscoveryView.tsx index f4c42610..604e15e2 100644 --- a/src/components/DiscoveryView.tsx +++ b/src/components/DiscoveryView.tsx @@ -584,6 +584,8 @@ export const DiscoveryView: React.FC = React.memo(() => { setDiscoveryTotalCount, setDiscoveryScrollPosition, appendDiscoveryRepos, + trendingTimeRange, + setTrendingTimeRange, } = useAppStore(); const [isAnalyzing, setIsAnalyzing] = useState(false); @@ -667,7 +669,7 @@ export const DiscoveryView: React.FC = React.memo(() => { switch (channelId) { case 'trending': - result = await githubApi.getTrendingRepositories(discoveryPlatform, page); + result = await githubApi.getTrendingRepositories(discoveryPlatform, page, 20, trendingTimeRange); break; case 'hot-release': result = await githubApi.getHotReleaseRepositories(discoveryPlatform, page); @@ -735,7 +737,7 @@ export const DiscoveryView: React.FC = React.memo(() => { } finally { setDiscoveryLoading(channelId, false); } - }, [githubToken, t, setDiscoveryLoading, setDiscoveryRepos, setDiscoveryLastRefresh, discoveryPlatform, discoveryLanguage, discoverySortBy, discoverySortOrder, discoverySearchQuery, discoverySelectedTopic, setDiscoveryHasMore, setDiscoveryNextPage, setDiscoveryTotalCount, appendDiscoveryRepos]); + }, [githubToken, t, setDiscoveryLoading, setDiscoveryRepos, setDiscoveryLastRefresh, discoveryPlatform, discoveryLanguage, discoverySortBy, discoverySortOrder, discoverySearchQuery, discoverySelectedTopic, setDiscoveryHasMore, setDiscoveryNextPage, setDiscoveryTotalCount, appendDiscoveryRepos, trendingTimeRange]); // 切换频道时重置页码、恢复滚动位置,并自动加载空数据 useEffect(() => { @@ -755,6 +757,13 @@ export const DiscoveryView: React.FC = React.memo(() => { } }, [selectedDiscoveryChannel, refreshChannel]); + // 趋势时间范围改变时刷新数据 + useEffect(() => { + if (selectedDiscoveryChannel === 'trending' && trendingTimeRange) { + refreshChannel('trending', 1, false); + } + }, [trendingTimeRange, selectedDiscoveryChannel, refreshChannel]); + // 主题改变时刷新数据 useEffect(() => { if (selectedDiscoveryChannel === 'topic' && discoverySelectedTopic) { @@ -1054,7 +1063,21 @@ export const DiscoveryView: React.FC = React.memo(() => { {/* 第二行:筛选和操作按钮 */}
- {selectedDiscoveryChannel === 'topic' && ( + {selectedDiscoveryChannel === 'trending' && ( +
+ + +
+ )} + {selectedDiscoveryChannel === 'topic' && (