From c40ce59d7afb2993a19ff4dfdb644fcd221d135b Mon Sep 17 00:00:00 2001 From: optrader Date: Sat, 15 Nov 2025 15:01:32 +0900 Subject: [PATCH] [251115] fix: ProductVideo.v3.jsx Marquee disabled in modal true MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit πŸ• 컀밋 μ‹œκ°„: 2025. 11. 15. 15:01:32 πŸ“Š λ³€κ²½ 톡계: β€’ 총 파일: 2개 β€’ μΆ”κ°€: +26쀄 β€’ μ‚­μ œ: -13쀄 πŸ“ μˆ˜μ •λœ 파일: ~ com.twin.app.shoptime/src/components/VideoPlayer/VideoPlayer.v3.js ~ com.twin.app.shoptime/src/views/DetailPanel/ProductContentSection/ProductVideo/ProductVideo.v3.jsx πŸ”§ ν•¨μˆ˜ λ³€κ²½ λ‚΄μš©: πŸ“„ com.twin.app.shoptime/src/views/DetailPanel/ProductContentSection/ProductVideo/ProductVideo.v3.jsx (javascript): πŸ”„ Modified: Spottable() πŸ”§ μ£Όμš” λ³€κ²½ λ‚΄μš©: β€’ UI μ»΄ν¬λ„ŒνŠΈ μ•„ν‚€ν…μ²˜ κ°œμ„  --- .../components/VideoPlayer/VideoPlayer.v3.js | 28 ++++++++++--------- .../ProductVideo/ProductVideo.v3.jsx | 11 ++++++++ 2 files changed, 26 insertions(+), 13 deletions(-) diff --git a/com.twin.app.shoptime/src/components/VideoPlayer/VideoPlayer.v3.js b/com.twin.app.shoptime/src/components/VideoPlayer/VideoPlayer.v3.js index c52529d3..e5f6cc23 100644 --- a/com.twin.app.shoptime/src/components/VideoPlayer/VideoPlayer.v3.js +++ b/com.twin.app.shoptime/src/components/VideoPlayer/VideoPlayer.v3.js @@ -2559,19 +2559,21 @@ const VideoPlayerBase = class extends React.Component { ) : null} - + {!panelInfo.modal && ( + + )} ); diff --git a/com.twin.app.shoptime/src/views/DetailPanel/ProductContentSection/ProductVideo/ProductVideo.v3.jsx b/com.twin.app.shoptime/src/views/DetailPanel/ProductContentSection/ProductVideo/ProductVideo.v3.jsx index 32095f2e..8f56868e 100644 --- a/com.twin.app.shoptime/src/views/DetailPanel/ProductContentSection/ProductVideo/ProductVideo.v3.jsx +++ b/com.twin.app.shoptime/src/views/DetailPanel/ProductContentSection/ProductVideo/ProductVideo.v3.jsx @@ -35,6 +35,7 @@ export default function ProductVideo({ const [modalState, setModalState] = useState(true); // λͺ¨λ‹¬ μƒνƒœ 관리 μΆ”κ°€ const [hasAutoPlayed, setHasAutoPlayed] = useState(false); // μžλ™ μž¬μƒ μ™„λ£Œ μ—¬λΆ€ const [isVideoPlaying, setIsVideoPlaying] = useState(false); // λΉ„λ””μ˜€ μž¬μƒ μ—¬λΆ€ flag + const [isVideoLoading, setIsVideoLoading] = useState(false); // λΉ„λ””μ˜€ λ‘œλ”© 쀑 flag const prevModalStateRef = useRef(null); // 이전 modal μƒνƒœ 좔적 const topPanel = panels[panels.length - 1]; @@ -97,6 +98,7 @@ export default function ProductVideo({ // prdtMediaUrl: productInfo?.prdtMediaUrl?.substring(0, 50), // }); setHasAutoPlayed(true); + setIsVideoLoading(true); // λ‘œλ”© μ‹œμž‘ // 짧은 λ”œλ ˆμ΄ ν›„ μž¬μƒ μ‹œμž‘ (μ»΄ν¬λ„ŒνŠΈ 마운트 μ™„λ£Œ ν›„) setTimeout(() => { @@ -129,6 +131,7 @@ export default function ProductVideo({ continuousPlay, // 반볡 μž¬μƒ μ˜΅μ…˜ 전달 }) ); + setIsVideoLoading(false); // λ‘œλ”© μ™„λ£Œ }, 100); } }, [ @@ -199,9 +202,16 @@ export default function ProductVideo({ const handleVideoClick = useCallback(() => { // console.log('[ProductVideo] ========== handleVideoClick 호좜 =========='); // console.log('[ProductVideo] canPlayVideo:', canPlayVideo); + // console.log('[ProductVideo] isVideoLoading:', isVideoLoading); // console.log('[ProductVideo] panels.length:', panels.length); // console.log('[ProductVideo] All panels:', JSON.stringify(panels, null, 2)); + // λΉ„λ””μ˜€ λ‘œλ”© 쀑이면 클릭 λ¬΄μ‹œ + if (isVideoLoading) { + console.log('[ProductVideo] ⚠️ λΉ„λ””μ˜€ λ‘œλ”© 쀑 - 클릭 λ¬΄μ‹œ'); + return; + } + if (canPlayVideo) { const currentTopPanel = panels[panels.length - 1]; @@ -280,6 +290,7 @@ export default function ProductVideo({ modalClassNameChange, panels, modalState, + isVideoLoading, ]); if (!canPlayVideo) return null;