From b31ff158c5b92562b3e8959e3f578f9ad93d0879 Mon Sep 17 00:00:00 2001 From: optrader Date: Sun, 19 Oct 2025 22:21:30 +0900 Subject: [PATCH] [251019] fix: PlayerPanel Optimization-3 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit πŸ• 컀밋 μ‹œκ°„: 2025. 10. 19. 22:21:28 πŸ“Š λ³€κ²½ 톡계: β€’ 총 파일: 3개 β€’ μΆ”κ°€: +40쀄 β€’ μ‚­μ œ: -3쀄 πŸ“ μˆ˜μ •λœ 파일: ~ com.twin.app.shoptime/src/views/PlayerPanel/PlayerTabContents/v2/BelowTabContainer.jsx ~ com.twin.app.shoptime/src/views/PlayerPanel/PlayerTabContents/v2/ChannelCard.jsx ~ com.twin.app.shoptime/src/views/PlayerPanel/PlayerTabContents/v2/LiveChannelContent.v2.jsx πŸ”§ ν•¨μˆ˜ λ³€κ²½ λ‚΄μš©: πŸ“„ com.twin.app.shoptime/src/views/PlayerPanel/PlayerTabContents/v2/BelowTabContainer.jsx (javascript): βœ… Added: BelowTabContainer(), propsAreEqual() πŸ“„ com.twin.app.shoptime/src/views/PlayerPanel/PlayerTabContents/v2/ChannelCard.jsx (javascript): βœ… Added: propsAreEqual() πŸ“„ com.twin.app.shoptime/src/views/PlayerPanel/PlayerTabContents/v2/LiveChannelContent.v2.jsx (javascript): βœ… Added: LiveChannelContents(), propsAreEqual() --- .../PlayerTabContents/v2/BelowTabContainer.jsx | 15 ++++++++++++++- .../PlayerTabContents/v2/ChannelCard.jsx | 14 +++++++++++++- .../v2/LiveChannelContent.v2.jsx | 14 +++++++++++++- 3 files changed, 40 insertions(+), 3 deletions(-) diff --git a/com.twin.app.shoptime/src/views/PlayerPanel/PlayerTabContents/v2/BelowTabContainer.jsx b/com.twin.app.shoptime/src/views/PlayerPanel/PlayerTabContents/v2/BelowTabContainer.jsx index f88f4e9e..ba418b01 100644 --- a/com.twin.app.shoptime/src/views/PlayerPanel/PlayerTabContents/v2/BelowTabContainer.jsx +++ b/com.twin.app.shoptime/src/views/PlayerPanel/PlayerTabContents/v2/BelowTabContainer.jsx @@ -10,7 +10,7 @@ import LiveChannelContents from './LiveChannelContents'; const SpottableDiv = Spottable('div'); -export default function BelowTabContainer({ +function BelowTabContainer({ liveInfos, currentTime, setSelectedIndex, @@ -47,3 +47,16 @@ export default function BelowTabContainer({ ); } + +const propsAreEqual = (prev, next) => { + return ( + prev.liveInfos === next.liveInfos && + prev.currentTime === next.currentTime && + prev.videoVerticalVisible === next.videoVerticalVisible && + prev.currentVideoShowId === next.currentVideoShowId && + prev.tabTitle === next.tabTitle && + prev.panelInfo?.shptmBanrTpNm === next.panelInfo?.shptmBanrTpNm + ); +}; + +export default React.memo(BelowTabContainer, propsAreEqual); diff --git a/com.twin.app.shoptime/src/views/PlayerPanel/PlayerTabContents/v2/ChannelCard.jsx b/com.twin.app.shoptime/src/views/PlayerPanel/PlayerTabContents/v2/ChannelCard.jsx index ad0ca02f..139e5b22 100644 --- a/com.twin.app.shoptime/src/views/PlayerPanel/PlayerTabContents/v2/ChannelCard.jsx +++ b/com.twin.app.shoptime/src/views/PlayerPanel/PlayerTabContents/v2/ChannelCard.jsx @@ -51,4 +51,16 @@ const ChannelCard = ({ ); }; -export default ChannelCard; +const propsAreEqual = (prev, next) => { + return ( + prev.channelName === next.channelName && + prev.programName === next.programName && + prev.logoSrc === next.logoSrc && + prev.thumbnailSrc === next.thumbnailSrc && + prev.progressPercent === next.progressPercent && + prev.backgroundColor === next.backgroundColor && + prev.spotlightId === next.spotlightId + ); +}; + +export default React.memo(ChannelCard, propsAreEqual); diff --git a/com.twin.app.shoptime/src/views/PlayerPanel/PlayerTabContents/v2/LiveChannelContent.v2.jsx b/com.twin.app.shoptime/src/views/PlayerPanel/PlayerTabContents/v2/LiveChannelContent.v2.jsx index 6f083898..0b8e2a5d 100644 --- a/com.twin.app.shoptime/src/views/PlayerPanel/PlayerTabContents/v2/LiveChannelContent.v2.jsx +++ b/com.twin.app.shoptime/src/views/PlayerPanel/PlayerTabContents/v2/LiveChannelContent.v2.jsx @@ -12,7 +12,7 @@ import ListEmptyContents from '../TabContents/ListEmptyContents/ListEmptyContent import ChannelCard from './ChannelCard'; import css from './LiveChannelContents.module.less'; -export default function LiveChannelContents({ +function LiveChannelContents({ liveInfos, currentTime, setSelectedIndex, @@ -142,3 +142,15 @@ export default function LiveChannelContents({ ); } + +const propsAreEqual = (prev, next) => { + return ( + prev.liveInfos === next.liveInfos && + prev.currentTime === next.currentTime && + prev.videoVerticalVisible === next.videoVerticalVisible && + prev.currentVideoShowId === next.currentVideoShowId && + prev.panelInfo?.shptmBanrTpNm === next.panelInfo?.shptmBanrTpNm + ); +}; + +export default React.memo(LiveChannelContents, propsAreEqual);