비디오 플레이어 관련 컴포넌트들의 타이머와 이벤트 리스너를 체계적으로 정리하여 메모리 누수 방지:
## ProductVideo.v2.jsx
- autoPlay 타이머 정리 강화 (dependency 최적화)
- 전체화면 전환 시 타이머 정리 명시
- Optional chaining으로 null 안정성 향상
- Document 이벤트 리스너 정리 명확화
## MediaPanel.jsx
- onEnded 타이머를 useRef로 추적 및 정리
- 컴포넌트 언마운트 시 전체 cleanup 함수 추가
- 비디오 플레이어 강제 정지로 리소스 누수 방지
- Modal 스타일 설정 시 ResizeObserver 정리 준비
## MediaPlayer.v2.jsx
- proportionLoaded 업데이트 타이머 최적화 (비디오 재생 중일 때만)
- 컴포넌트 언마운트 시 모든 타이머 및 상태 정리 강화
- Optional chaining으로 안정성 향상
- hideControls 메서드 타이머 정리 의도 명확화
🎯 효과:
- 장시간 비디오 재생 시 메모리 누수 방지
- 여러 번 반복 재생/정지 시 타이머 누적 방지
- 전체화면 전환 시 리소스 누수 방지
- 컴포넌트 언마운트 시 완전한 정리
📝 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
🕐 커밋 시간: 2025. 11. 12. 17:35:22
📊 변경 통계:
• 총 파일: 2개
• 추가: +57줄
• 삭제: -28줄
📝 수정된 파일:
~ com.twin.app.shoptime/src/components/VideoPlayer/MediaPlayer.jsx
~ com.twin.app.shoptime/src/views/DetailPanel/ProductContentSection/ProductVideo/ProductVideo.v2.jsx
🔧 주요 변경 내용:
• UI 컴포넌트 아키텍처 개선
• 소규모 기능 개선
🕐 커밋 시간: 2025. 11. 12. 15:28:31
📊 변경 통계:
• 총 파일: 2개
• 추가: +67줄
• 삭제: -31줄
📝 수정된 파일:
~ com.twin.app.shoptime/src/views/DetailPanel/ProductContentSection/ProductVideo/ProductVideo.module.less
~ com.twin.app.shoptime/src/views/DetailPanel/ProductContentSection/ProductVideo/ProductVideo.v2.jsx
🔧 주요 변경 내용:
• 소규모 기능 개선
🕐 커밋 시간: 2025. 11. 12. 13:06:56
📊 변경 통계:
• 총 파일: 1개
• 추가: +63줄
• 삭제: -3줄
📝 수정된 파일:
~ com.twin.app.shoptime/src/views/DetailPanel/ProductContentSection/ProductVideo/ProductVideo.v2.jsx
🔧 주요 변경 내용:
• 소규모 기능 개선
🕐 커밋 시간: 2025. 11. 12. 10:53:05
📊 변경 통계:
• 총 파일: 6개
• 추가: +42줄
• 삭제: -2줄
📁 추가된 파일:
+ com.twin.app.shoptime/src/views/PlayerPanel/PlayerTabContents/TabContents/ThemeContents.figma.jsx
+ com.twin.app.shoptime/src/views/PlayerPanel/PlayerTabContents/TabContents/ThemeContents.jsx
+ com.twin.app.shoptime/src/views/PlayerPanel/PlayerTabContents/TabContents/ThemeContents.module.less
📝 수정된 파일:
~ com.twin.app.shoptime/src/style/CommonStyle.module.less
~ com.twin.app.shoptime/src/views/PlayerPanel/PlayerTabContents/TabContents/ShopNowContents.jsx
~ com.twin.app.shoptime/src/views/PlayerPanel/PlayerTabContents/TabContents/ShopNowContents.v2.module.less
🔧 주요 변경 내용:
• 소규모 기능 개선
• 모듈 구조 개선
🕐 커밋 시간: 2025. 11. 11. 19:49:42
📊 변경 통계:
• 총 파일: 2개
• 추가: +2줄
• 삭제: -1줄
📁 추가된 파일:
+ com.twin.app.shoptime/.docs/player-panel/TabContainerV2-Divider-Problem-Analysis.md
📝 수정된 파일:
~ com.twin.app.shoptime/src/views/PlayerPanel/PlayerTabContents/TabContents/ShopNowContents.jsx
🔧 주요 변경 내용:
• 개발 문서 및 가이드 개선
🕐 커밋 시간: 2025. 11. 11. 19:14:36
📊 변경 통계:
• 총 파일: 1개
• 추가: +9줄
• 삭제: -7줄
📝 수정된 파일:
~ com.twin.app.shoptime/src/views/DetailPanel/ProductContentSection/ProductVideo/ProductVideo.v2.jsx
🔧 주요 변경 내용:
• 코드 정리 및 최적화
🕐 커밋 시간: 2025. 11. 11. 19:08:01
📊 변경 통계:
• 총 파일: 6개
• 추가: +71줄
• 삭제: -70줄
📁 추가된 파일:
+ com.twin.app.shoptime/src/actions/mediaOverlayActions.js
+ com.twin.app.shoptime/src/middleware/mediaAutoCloseMiddleware.js
+ com.twin.app.shoptime/src/reducers/mediaOverlayReducer.js
📝 수정된 파일:
~ com.twin.app.shoptime/src/components/VideoPlayer/MediaPlayer.v2.jsx
~ com.twin.app.shoptime/src/store/store.js
~ com.twin.app.shoptime/src/views/DetailPanel/ProductContentSection/ProductVideo/ProductVideo.v2.jsx
🔧 주요 변경 내용:
• UI 컴포넌트 아키텍처 개선
• 핵심 비즈니스 로직 개선
• 소규모 기능 개선
• 코드 정리 및 최적화
• 모듈 구조 개선
🕐 커밋 시간: 2025. 11. 11. 17:17:07
📊 변경 통계:
• 총 파일: 3개
• 추가: +55줄
• 삭제: -15줄
📝 수정된 파일:
~ com.twin.app.shoptime/src/views/DetailPanel/ProductContentSection/ProductVideo/ProductVideo.v2.jsx
~ com.twin.app.shoptime/src/views/MainView/MainView.jsx
~ com.twin.app.shoptime/src/views/PlayerPanel/PlayerOverlay/PlayerOverlayContents.jsx
🔧 주요 변경 내용:
• 소규모 기능 개선
🕐 커밋 시간: 2025. 11. 11. 15:06:28
📊 변경 통계:
• 총 파일: 2개
• 추가: +149줄
• 삭제: -45줄
📝 수정된 파일:
~ com.twin.app.shoptime/src/reducers/videoOverlayReducer.js
~ com.twin.app.shoptime/src/views/DetailPanel/ProductContentSection/ProductVideo/ProductVideo.v2.jsx
🔧 주요 변경 내용:
• 핵심 비즈니스 로직 개선
• 중간 규모 기능 개선
🕐 커밋 시간: 2025. 11. 11. 14:07:12
📊 변경 통계:
• 총 파일: 3개
• 추가: +211줄
• 삭제: -37줄
📝 수정된 파일:
~ com.twin.app.shoptime/src/components/VideoPlayer/MediaPlayer.jsx
~ com.twin.app.shoptime/src/views/DetailPanel/ProductAllSection/ProductAllSection.jsx
~ com.twin.app.shoptime/src/views/DetailPanel/ProductContentSection/ProductVideo/ProductVideo.v2.jsx
🔧 주요 변경 내용:
• UI 컴포넌트 아키텍처 개선
• 대규모 기능 개발
- VideoPlayer 컴포넌트에 onClick={handleVideoPlayerClick} 추가
- MediaPlayer가 modal 모드일 때 onClick을 처리하는 기능 활용
- 비디오 재생 중 클릭으로 전체화면 토글 동작
🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
- VideoPlayer ref 호환성 문제로 인해 MediaPlayer.jsx로 복구
- MediaPlayerV2는 함수 컴포넌트로 ref 접근 불가능
- ProductVideoV2와의 ref 호환성을 위해 원래 MediaPlayer 유지
🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
- MediaPlayer -> MediaPlayer.v2로 import 변경
- VideoPlayer -> MediaPlayerV2 as VideoPlayer로 변경
- 최적화된 비디오 플레이어 컴포넌트 사용으로 클릭 이벤트 감지 개선 예상
- 불필요한 window 레벨 클릭 감지 로그 제거
MediaPlayer.v2 특징:
- 함수 컴포넌트 + React Hooks
- 최소한의 상태 관리 (6~9개)
- Modal ↔ Fullscreen 전환 지원
- 메모리 효율성 우선
🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
🎬 태그를 붙인 상세한 콘솔 로그 추가:
- handleThumbnailClick: 썸네일 클릭 감지
- handleVideoPlayerClick: 비디오 재생 중 클릭 감지 및 상태 검사
- handleVideoPlayerMouseDown: MouseDown 이벤트 감지
- toggleFullscreen: 전체화면 토글 상태 변화
- videoPlayerWrapper onClick/onMouseDownCapture: wrapper 레벨 이벤트
- normalContainerRef onClick/onMouseDownCapture: 컨테이너 레벨 이벤트
각 로그에는 다음 정보 포함:
- 현재 isPlaying, isFullscreen 상태
- 이벤트 타입 (type, target 등)
- 조건 만족 여부
🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
- TItemCard에 전달되던 중복 productTitle prop 제거
- productName prop이 이미 동일한 값(prdtNm)을 전달하고 있음
- React 경고 메시지 해결: "React does not recognize the 'productTitle' prop on a DOM element"
🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
- normalContainerRef div에 onClick 및 onMouseDownCapture 핸들러 추가
- videoPlayerWrapper div에 onMouseDownCapture 추가 (capture phase 이벤트 처리)
- CSS에 pointer-events: auto 및 cursor: pointer 추가
- 콘솔 로그 추가로 이벤트 감지 디버깅
이제 비디오 재생 중 클릭 시 엔터 키와 동일하게 전체화면으로 전환됨
🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
- 비디오 재생 중 클릭 시에도 엔터 키와 동일하게 전체화면으로 전환되도록 개선
- handleVideoPlayerClick 핸들러 추가
- 일반 재생 모드에서만 작동하며, 이미 전체화면 상태일 때는 작동하지 않음
🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>