import React, { useEffect } from "react"; import { View, StyleSheet } from "react-native"; import { ThemedView } from "@/components/ThemedView"; import { ThemedText } from "@/components/ThemedText"; import useFavoritesStore from "@/stores/favoritesStore"; import { Favorite } from "@/services/storage"; import VideoCard from "@/components/VideoCard"; import { api } from "@/services/api"; import CustomScrollView from "@/components/CustomScrollView"; import { useResponsiveLayout } from "@/hooks/useResponsiveLayout"; import { getCommonResponsiveStyles } from "@/utils/ResponsiveStyles"; import ResponsiveNavigation from "@/components/navigation/ResponsiveNavigation"; import ResponsiveHeader from "@/components/navigation/ResponsiveHeader"; export default function FavoritesScreen() { const { favorites, loading, error, fetchFavorites } = useFavoritesStore(); // 响应式布局配置 const responsiveConfig = useResponsiveLayout(); const commonStyles = getCommonResponsiveStyles(responsiveConfig); const { deviceType, spacing } = responsiveConfig; useEffect(() => { fetchFavorites(); }, [fetchFavorites]); const renderItem = ({ item }: { item: Favorite & { key: string }; index: number }) => { const [source, id] = item.key.split("+"); return ( ); }; // 动态样式 const dynamicStyles = createResponsiveStyles(deviceType, spacing); const renderFavoritesContent = () => ( <> {deviceType === 'tv' && ( 我的收藏 )} ); const content = ( {renderFavoritesContent()} ); // 根据设备类型决定是否包装在响应式导航中 if (deviceType === 'tv') { return content; } return ( {content} ); } const createResponsiveStyles = (deviceType: string, spacing: number) => { const isMobile = deviceType === 'mobile'; const isTablet = deviceType === 'tablet'; const isTV = deviceType === 'tv'; return StyleSheet.create({ container: { flex: 1, paddingTop: isTV ? spacing * 2 : 0, }, headerContainer: { flexDirection: "row", justifyContent: "space-between", alignItems: "center", paddingHorizontal: spacing * 1.5, marginBottom: spacing / 2, }, headerTitle: { fontSize: isMobile ? 24 : isTablet ? 28 : 32, fontWeight: "bold", paddingTop: spacing, color: 'white', }, }); };