import React, { useEffect, useState } from 'react'; import { View, Text, ScrollView, TouchableOpacity, Image, StyleSheet } from 'react-native'; import { useRouter } from 'expo-router'; import { useAuthStore } from '../store/authStore'; import { getFollowedLiveRooms } from '../services/bilibili'; import { LivePulse } from './LivePulse'; import { proxyImageUrl } from '../utils/imageUrl'; import type { LiveRoom } from '../services/types'; export function FollowedLiveStrip() { const { sessdata } = useAuthStore(); const [rooms, setRooms] = useState([]); const router = useRouter(); useEffect(() => { if (!sessdata) return; getFollowedLiveRooms().then(setRooms).catch(() => {}); }, [sessdata]); if (!sessdata || rooms.length === 0) return null; return ( 我关注的直播 {rooms.map((room) => ( router.push(`/live/${room.roomid}` as any)} activeOpacity={0.7} > {room.uname.length > 5 ? room.uname.slice(0, 5) : room.uname} ))} ); } const styles = StyleSheet.create({ container: { backgroundColor: '#f4f4f4', paddingHorizontal: 12, paddingVertical: 8, }, title: { fontSize: 12, color: '#999', marginBottom: 6, }, scrollContent: { gap: 12, alignItems: 'center', }, item: { alignItems: 'center', width: 56, }, pulseRow: { height: 16, justifyContent: 'center', alignItems: 'center', marginBottom: 4, }, avatar: { width: 44, height: 44, borderRadius: 22, backgroundColor: '#eee', }, name: { fontSize: 11, color: '#333', marginTop: 4, textAlign: 'center', width: 56, }, });