import React, { useState, useEffect } from 'react'; import { Star, RefreshCcw, Loader2 } from 'lucide-react'; import { ScreenRecord } from '../types'; import { formatDate } from '../utils'; import { useStarToggle } from '../hooks/useStarToggle'; interface StarredTabProps { hostname: string; onViewRecord: (record: ScreenRecord) => void; } export default function StarredTab({ hostname, onViewRecord }: StarredTabProps) { const [starredRecords, setStarredRecords] = useState([]); const [loadingStarred, setLoadingStarred] = useState(false); const { updatingStars, toggleStar } = useStarToggle(); const fetchStarredRecords = async () => { try { setLoadingStarred(true); const response = await fetch(`/hosts/${hostname}/starred`); if (!response.ok) throw new Error('获取星标记录失败'); const data = await response.json(); setStarredRecords(data.records); } catch (error) { console.error('获取星标记录失败:', error); } finally { setLoadingStarred(false); } }; useEffect(() => { fetchStarredRecords(); }, [hostname]); const handleToggleStar = async (recordId: string) => { const newStatus = await toggleStar(recordId); if (newStatus === false) { // Removed from starred setStarredRecords(prev => prev.filter(r => r.id !== recordId)); } else if (newStatus === true) { // Shouldn't happen in this view usually, but if it does... fetchStarredRecords(); } }; return (

星标记录

{loadingStarred ? (

加载星标记录...

) : starredRecords.length === 0 ? (

还没有星标记录

在截图时间线中点击星标按钮来收藏重要记录

) : (
{starredRecords.map((record) => (
{record.screenshots.length > 0 && (
{record.screenshots[0].monitorName}
)}
{formatDate(record.timestamp, 'short')}
{record.screenshots.length} 个截图 • {record.windows.length} 个窗口
{record.windows.length > 0 && (
主要窗口: {record.windows[0].title}
)}
))}
)}
); }