diff --git a/com.twin.app.shoptime/src/views/HomePanel/HomeBanner/RandomUnit.jsx b/com.twin.app.shoptime/src/views/HomePanel/HomeBanner/RandomUnit.jsx index 640fb66c..c45b6d79 100644 --- a/com.twin.app.shoptime/src/views/HomePanel/HomeBanner/RandomUnit.jsx +++ b/com.twin.app.shoptime/src/views/HomePanel/HomeBanner/RandomUnit.jsx @@ -437,20 +437,19 @@ export default function RandomUnit({ // 비디오 클릭 const videoClick = useCallback(() => { - const lastFocusedTargetId = getContainerId(Spotlight.getCurrent()); const currentSpot = Spotlight.getCurrent(); - if (lastFocusedTargetId) { - dispatch( - updateHomeInfo({ - name: panel_names.HOME_PANEL, - panelInfo: { - lastFocusedTargetId, - focusedContainerId: TEMPLATE_CODE_CONF.TOP, - currentSpot: currentSpot?.getAttribute("data-spotlight-id"), - }, - }) - ); - } + const currentSpotlightId = currentSpot?.getAttribute("data-spotlight-id") || spotlightId; + + dispatch( + updateHomeInfo({ + name: panel_names.HOME_PANEL, + panelInfo: { + lastFocusedTargetId: currentSpotlightId, + focusedContainerId: TEMPLATE_CODE_CONF.TOP, + currentSpot: currentSpotlightId, + }, + }) + ); dispatch( startVideoPlayer({ @@ -484,6 +483,7 @@ export default function RandomUnit({ randomDataRef, sendBannerLog, onBlur, + dispatch, ]); // 투데이즈 딜 가격 정보 diff --git a/com.twin.app.shoptime/src/views/HomePanel/HomePanel.jsx b/com.twin.app.shoptime/src/views/HomePanel/HomePanel.jsx index 242fc7fd..ab8999eb 100644 --- a/com.twin.app.shoptime/src/views/HomePanel/HomePanel.jsx +++ b/com.twin.app.shoptime/src/views/HomePanel/HomePanel.jsx @@ -131,6 +131,8 @@ const HomePanel = ({ isOnTop }) => { const isInitialRender = useRef(true); const verticalPagenatorRef = useRef(null); const currentSentMenuRef = useRef(null); + const lastRestoredIdRef = useRef(null); + const prevIsOnTopRef = useRef(isOnTop); useEffect(() => { if (nowMenu === "Home/Top") { @@ -562,14 +564,21 @@ const HomePanel = ({ isOnTop }) => { }, [dispatch]); useEffect(() => { + const justCameBack = !prevIsOnTopRef.current && isOnTop; + if ( - isOnTop && + justCameBack && panelInfo?.lastFocusedTargetId && - !panelInfo?.focusedContainerId + panelInfo.lastFocusedTargetId !== lastRestoredIdRef.current ) { - Spotlight.focus(panelInfo.lastFocusedTargetId); + lastRestoredIdRef.current = panelInfo.lastFocusedTargetId; + setTimeout(() => { + Spotlight.focus(panelInfo.lastFocusedTargetId); + }, 150); } - }, [isOnTop, panelInfo?.lastFocusedTargetId, panelInfo?.focusedContainerId]); + + prevIsOnTopRef.current = isOnTop; + }, [isOnTop, panelInfo?.lastFocusedTargetId]); useEffect(() => { return () => {