[251119] fix: PlayerPanel - 4
🕐 커밋 시간: 2025. 11. 19. 16:35:54 📊 변경 통계: • 총 파일: 2개 • 추가: +13줄 • 삭제: -6줄 📝 수정된 파일: ~ com.twin.app.shoptime/src/views/DetailPanel/DetailPanel.jsx ~ com.twin.app.shoptime/src/views/PlayerPanel/PlayerPanel.jsx
This commit is contained in:
@@ -173,6 +173,7 @@ const PlayerPanel = ({ isTabActivated, panelInfo, isOnTop, spotlightId, ...props
|
||||
|
||||
const videoPlayer = useRef(null);
|
||||
const prevModal = usePrevious(panelInfo?.modal);
|
||||
const prevIsTopPanelDetailFromPlayer = usePrevious(isTopPanelDetailFromPlayer);
|
||||
const [playListInfo, setPlayListInfo] = USE_STATE('playListInfo', '');
|
||||
const [shopNowInfo, setShopNowInfo] = USE_STATE('shopNowInfo');
|
||||
const [backupInitialIndex, setBackupInitialIndex] = USE_STATE('backupInitialIndex', 0);
|
||||
@@ -2060,12 +2061,15 @@ const PlayerPanel = ({ isTabActivated, panelInfo, isOnTop, spotlightId, ...props
|
||||
// PlayerPanel이 최상단이 될 때 오버레이 표시 (DetailPanel에서 복귀)
|
||||
useEffect(() => {
|
||||
if (isOnTop && !panelInfo.modal && !videoVerticalVisible) {
|
||||
// launchedFromPlayer가 있는지 확인하여 HomePanel 복귀와 PlayerPanel 내부 DetailPanel 복귀 구분
|
||||
const hasLaunchedFromPlayer = panelInfo?.lastFocusedTargetId !== undefined;
|
||||
// 정확한 복귀 종류 구분:
|
||||
// 1. HomePanel 복귀: prevModal === true && prevIsTopPanelDetailFromPlayer === false
|
||||
// 2. DetailPanel 복귀: prevIsTopPanelDetailFromPlayer === true
|
||||
const isHomePanelReturn = prevModal === true && prevIsTopPanelDetailFromPlayer === false;
|
||||
const isDetailPanelReturn = prevIsTopPanelDetailFromPlayer === true;
|
||||
|
||||
if (hasLaunchedFromPlayer) {
|
||||
if (isDetailPanelReturn) {
|
||||
console.log('[PlayerPanel] ✅ PlayerPanel 내부 DetailPanel에서 복귀함! - 오버레이 표시');
|
||||
} else {
|
||||
} else if (isHomePanelReturn) {
|
||||
console.log('[PlayerPanel] 📺 HomePanel에서 복귀함 - 오버레이 표시');
|
||||
// HomePanel에서 복귀 시 항상 tabIndex=1로 시작
|
||||
console.log('[PlayerPanel] 🔄 HomePanel 복귀 - tabIndex를 1로 강제 설정');
|
||||
@@ -2073,6 +2077,8 @@ const PlayerPanel = ({ isTabActivated, panelInfo, isOnTop, spotlightId, ...props
|
||||
setTabIndexV2(1);
|
||||
console.log('[PlayerPanel] 📝 tabIndexV2를 1로 설정됨');
|
||||
}
|
||||
} else {
|
||||
console.log('[PlayerPanel] 🔄 그 외 복귀 - 오버레이 표시');
|
||||
}
|
||||
|
||||
setSideContentsVisible(true);
|
||||
@@ -2081,7 +2087,7 @@ const PlayerPanel = ({ isTabActivated, panelInfo, isOnTop, spotlightId, ...props
|
||||
// VideoPlayer가 belowContentsVisible prop을 감지해서 자동으로 controls 표시함
|
||||
|
||||
// PlayerPanel 내부 DetailPanel에서 복귀 시에만 포커스 복원 시도
|
||||
if (hasLaunchedFromPlayer) {
|
||||
if (isDetailPanelReturn) {
|
||||
const lastFocusedTargetId = panelInfo?.lastFocusedTargetId;
|
||||
console.log('[PlayerPanel] 🎯 PlayerPanel DetailPanel 복귀 - lastFocusedTargetId:', lastFocusedTargetId);
|
||||
|
||||
@@ -2094,7 +2100,7 @@ const PlayerPanel = ({ isTabActivated, panelInfo, isOnTop, spotlightId, ...props
|
||||
}
|
||||
}
|
||||
}
|
||||
}, [isOnTop, panelInfo.modal, videoVerticalVisible, panelInfo?.lastFocusedTargetId, tabContainerVersion, setTabIndexV2]);
|
||||
}, [isOnTop, panelInfo.modal, videoVerticalVisible, panelInfo?.lastFocusedTargetId, tabContainerVersion, setTabIndexV2, prevModal, prevIsTopPanelDetailFromPlayer]);
|
||||
|
||||
useEffect(() => {
|
||||
// tabContainerVersion === 1일 때만 실행
|
||||
|
||||
Reference in New Issue
Block a user