import React, { useCallback, useEffect, useMemo, useRef } from 'react'; import { useDispatch } from 'react-redux'; import Spotlight from '@enact/spotlight'; // <<<<<<< HEAD import defaultImage from '../../../../../assets/images/img-thumb-empty-144@3x.png'; import { updatePanel } from '../../../../actions/panelActions'; import TVirtualGridList from '../../../../components/TVirtualGridList/TVirtualGridList'; import { LOG_CONTEXT_NAME, LOG_MENU, LOG_MESSAGE_ID, panel_names } from '../../../../utils/Config'; import { $L, removeSpecificTags } from '../../../../utils/helperMethods'; import PlayerItemCard, { TYPES } from '../../PlayerItemCard/PlayerItemCard'; import ListEmptyContents from '../TabContents/ListEmptyContents/ListEmptyContents'; import css from './LiveChannelContents.module.less'; import { getMainCategoryShowDetail } from '../../../../actions/mainActions'; import { sendLogTotalRecommend } from '../../../../actions/logActions'; // ======= // import defaultImage from "../../../../../assets/images/img-thumb-empty-144@3x.png"; // import { updatePanel } from "../../../../actions/panelActions"; // import TVirtualGridList from "../../../../components/TVirtualGridList/TVirtualGridList"; // import { // LOG_CONTEXT_NAME, // LOG_MENU, // LOG_MESSAGE_ID, // panel_names, // } from "../../../../utils/Config"; // import { $L, removeSpecificTags } from "../../../../utils/helperMethods"; // import PlayerItemCard, { TYPES } from "../../PlayerItemCard/PlayerItemCard"; // import ListEmptyContents from "../TabContents/ListEmptyContents/ListEmptyContents"; // import css from "./LiveChannelContents.module.less"; // import { getMainCategoryShowDetail } from "../../../../actions/mainActions"; // import { sendLogTotalRecommend } from "../../../../actions/logActions"; // >>>>>>> gitlab/develop export default function FeaturedShowContents({ featuredShowsInfos, videoVerticalVisible, currentVideoInfo, currentVideoShowId, setSelectedIndex, selectedIndex, tabIndex, handleItemFocus, tabTitle, panelInfo, }) { const dispatch = useDispatch(); const isClickBlocked = useRef(false); const blockTimeoutRef = useRef(null); const handleFocus = useCallback( () => () => { if (handleItemFocus) { handleItemFocus(LOG_MENU.FULL_FEATURED_SHOWS); } }, [handleItemFocus] ); const renderItem = useCallback( ({ index, ...rest }) => { const { thumbnailUrl, logoImgPath, thumbnailImgPath, patncLogoPath, patnrId, showId, prdtId, patncNm, showNm, catNm, lgCatCd, } = featuredShowsInfos[index]; const handleItemClick = () => { const params = { tabTitle: tabTitle[tabIndex], showId: showId, showTitle: showNm, showType: panelInfo?.shptmBanrTpNm, category: catNm, partner: patncNm, contextName: LOG_CONTEXT_NAME.SHOW, messageId: LOG_MESSAGE_ID.CONTENTCLICK, }; dispatch(sendLogTotalRecommend(params)); //중복클릭방지 if (isClickBlocked.current) { return; } isClickBlocked.current = true; // 이전 타이머가 있으면 정리 if (blockTimeoutRef.current) { clearTimeout(blockTimeoutRef.current); } blockTimeoutRef.current = setTimeout(() => { isClickBlocked.current = false; blockTimeoutRef.current = null; }, 600); if (currentVideoShowId && currentVideoShowId === showId) { return; } setSelectedIndex(index); dispatch( getMainCategoryShowDetail({ patnrId: patnrId, showId: showId, }) ); }; const showNameDangerouslySetInnerHTML = () => { const sanitizedString = removeSpecificTags(showNm); return { __html: sanitizedString }; }; return ( ); }, [featuredShowsInfos, currentVideoInfo, currentVideoShowId, videoVerticalVisible, isClickBlocked] ); useEffect(() => { const timer = setTimeout(() => { Spotlight.focus('tabChannel-video-' + selectedIndex); }); return () => clearTimeout(timer); }, [featuredShowsInfos]); // cleanup useEffect useEffect(() => { return () => { if (blockTimeoutRef.current) { clearTimeout(blockTimeoutRef.current); } }; }, []); return ( <>
{featuredShowsInfos && featuredShowsInfos.length > 0 ? ( ) : ( )}
); }