import { Play, CheckCircle2 } from 'lucide-react'; import { useState, useEffect } from 'react'; export default function EpisodeList({ episodes, currentTap, movieSlug }) { const [serverIndex, setServerIndex] = useState(0); const [selectedChunkIndex, setSelectedChunkIndex] = useState(0); const [watched, setWatched] = useState([]); // Tự động đồng bộ server và tab (chunk) chứa tập đang phát (currentTap) useEffect(() => { if (currentTap && episodes?.length) { const foundServerIdx = episodes.findIndex(server => server.server_data?.some(ep => ep.name === currentTap) ); if (foundServerIdx !== -1) { setServerIndex(foundServerIdx); const targetServer = episodes[foundServerIdx]; const targetEpisodes = targetServer?.server_data || []; const epIdx = targetEpisodes.findIndex(ep => ep.name === currentTap); if (epIdx !== -1) { const targetChunkIdx = Math.floor(epIdx / 25); setSelectedChunkIndex(targetChunkIdx); } } } }, [currentTap, episodes]); // Tải lịch sử xem phim useEffect(() => { try { const history = JSON.parse(localStorage.getItem('txa_watch_history') || '{}'); if (history[movieSlug]?.watched) { setWatched(history[movieSlug].watched); } } catch (e) { console.error('Failed to load watch history'); } }, [movieSlug]); if (!episodes?.length) return null; const currentServer = episodes[serverIndex] || episodes[0]; const allEpisodes = currentServer?.server_data || []; // Chia danh sách tập phim thành các nhóm tối đa 25 tập const chunkSize = 25; const chunks = []; for (let i = 0; i < allEpisodes.length; i += chunkSize) { chunks.push(allEpisodes.slice(i, i + chunkSize)); } // Đảm bảo selectedChunkIndex không vượt quá phạm vi mới sau khi đổi server const activeChunkIndex = selectedChunkIndex < chunks.length ? selectedChunkIndex : 0; const visibleEpisodes = chunks[activeChunkIndex] || []; return (