feat: 优化下载页UI交互、支持暗黑主题,移除首页 header 底边框

- downloads.tsx: 删除前弹 Alert 确认框(区分"取消下载"和"删除文件")
- downloads.tsx: 下载出错时显示"重新下载"按钮,跳转视频详情页
- downloads.tsx: 下载中取消按钮改为 close-circle-outline 图标
- downloads.tsx: 已完成条目整行可点击播放,移除单独"播放"按钮
- downloads.tsx: 播放器横竖屏均显示顶部控制栏,点击切换显隐
- downloads.tsx: 移除进度条旁 ActivityIndicator,保留百分比文字
- downloads.tsx: 全部颜色跟随暗黑主题(bg/card/text/textSub/border)
- index.tsx: 移除悬浮 header 底部分割线
This commit is contained in:
Developer
2026-03-25 12:51:14 +08:00
parent e1fa8cc347
commit c7fbc1f441
4 changed files with 119 additions and 72 deletions

View File

@@ -49,7 +49,10 @@ export default function VideoDetailScreen() {
const [danmakus, setDanmakus] = useState<DanmakuItem[]>([]);
const [currentTime, setCurrentTime] = useState(0);
const [showDownload, setShowDownload] = useState(false);
const [uploaderStat, setUploaderStat] = useState<{ follower: number; archiveCount: number } | null>(null);
const [uploaderStat, setUploaderStat] = useState<{
follower: number;
archiveCount: number;
} | null>(null);
const {
videos: relatedVideos,
loading: relatedLoading,
@@ -71,7 +74,9 @@ export default function VideoDetailScreen() {
useEffect(() => {
if (!video?.owner?.mid) return;
getUploaderStat(video.owner.mid).then(setUploaderStat).catch(() => {});
getUploaderStat(video.owner.mid)
.then(setUploaderStat)
.catch(() => {});
}, [video?.owner?.mid]);
return (
@@ -197,7 +202,8 @@ export default function VideoDetailScreen() {
</Text>
{uploaderStat && (
<Text style={styles.upStat}>
{formatCount(uploaderStat.follower)} · {formatCount(uploaderStat.archiveCount)}
{formatCount(uploaderStat.follower)} ·{" "}
{formatCount(uploaderStat.archiveCount)}
</Text>
)}
</View>
@@ -465,7 +471,7 @@ function SeasonSection({
<TouchableOpacity
style={[
styles.epCard,
{ backgroundColor: theme.card },
{ backgroundColor: theme.card, borderColor: theme.border },
isCurrent && styles.epCardActive,
]}
onPress={() => !isCurrent && onEpisodePress(ep.bvid)}
@@ -564,10 +570,10 @@ const styles = StyleSheet.create({
width: 120,
borderRadius: 6,
overflow: "hidden",
borderWidth: 1.5,
borderWidth: 1,
borderColor: "transparent",
},
epCardActive: { borderColor: "#00AEEC" },
epCardActive: { borderColor: "#00AEEC", borderWidth: 1.5 },
epThumb: { width: 120, height: 68 },
epNum: { fontSize: 11, color: "#999", paddingHorizontal: 6, paddingTop: 4 },
epNumActive: { color: "#00AEEC", fontWeight: "600" },