통합로그 피드백 수정
This commit is contained in:
@@ -12,7 +12,7 @@ import {
|
||||
// setShowPopup,
|
||||
fetchCurrentUserHomeTerms,
|
||||
} from "../../../actions/homeActions";
|
||||
import {
|
||||
import {
|
||||
changeAppStatus,
|
||||
setOptionalTermsPopupShown,
|
||||
setOptionalTermsUserDecision,
|
||||
@@ -45,11 +45,11 @@ import SimpleVideoContainer from "./SimpleVideoContainer";
|
||||
const SpottableComponent = Spottable("div");
|
||||
const Container = SpotlightContainerDecorator(
|
||||
{ enterTo: "last-focused" },
|
||||
"div",
|
||||
"div"
|
||||
);
|
||||
const ContainerBasic = SpotlightContainerDecorator(
|
||||
{ enterTo: "last-focused" },
|
||||
"div",
|
||||
"div"
|
||||
);
|
||||
|
||||
export default function HomeBanner({
|
||||
@@ -60,11 +60,11 @@ export default function HomeBanner({
|
||||
}) {
|
||||
const dispatch = useDispatch();
|
||||
const homeTopDisplayInfo = useSelector(
|
||||
(state) => state.home.homeTopDisplayInfo,
|
||||
(state) => state.home.homeTopDisplayInfo
|
||||
);
|
||||
|
||||
const bannerDataList = useSelector(
|
||||
(state) => state.home.bannerData?.bannerInfos,
|
||||
(state) => state.home.bannerData?.bannerInfos
|
||||
);
|
||||
|
||||
const popupVisible = useSelector((state) => state.common.popup.popupVisible);
|
||||
@@ -141,11 +141,11 @@ export default function HomeBanner({
|
||||
modalClassName: css.videoModal,
|
||||
isVerticalModal: true, // Assuming second banner is horizontal, so modal is vertical
|
||||
};
|
||||
|
||||
|
||||
// 중앙 제어 시스템에 '미리보기' 재생을 요청
|
||||
dispatch(requestPlayControl("banner1_preview", videoInfo));
|
||||
}
|
||||
|
||||
|
||||
if (handleItemFocus) {
|
||||
handleItemFocus();
|
||||
}
|
||||
@@ -158,10 +158,16 @@ export default function HomeBanner({
|
||||
|
||||
const termsData = useSelector((state) => state.home.termsData);
|
||||
const termsIdMap = useSelector((state) => state.home.termsIdMap);
|
||||
const optionalTermsAvailable = useSelector((state) => state.home.optionalTermsAvailable);
|
||||
const optionalTermsAvailable = useSelector(
|
||||
(state) => state.home.optionalTermsAvailable
|
||||
);
|
||||
const optionalTermsData = useSelector((state) => {
|
||||
// Chromium68 호환성을 위해 Optional Chaining 제거
|
||||
if (state.home.termsData && state.home.termsData.data && state.home.termsData.data.terms) {
|
||||
if (
|
||||
state.home.termsData &&
|
||||
state.home.termsData.data &&
|
||||
state.home.termsData.data.terms
|
||||
) {
|
||||
return state.home.termsData.data.terms.find(
|
||||
(term) => term.trmsTpCd === "MST00405"
|
||||
);
|
||||
@@ -174,7 +180,9 @@ export default function HomeBanner({
|
||||
const introTermsAgree = useSelector((state) => state.common.introTermsAgree);
|
||||
|
||||
// 새로운 Redux 상태: 선택약관 팝업 플로우 관리
|
||||
const optionalTermsPopupFlow = useSelector((state) => state.common.optionalTermsPopupFlow);
|
||||
const optionalTermsPopupFlow = useSelector(
|
||||
(state) => state.common.optionalTermsPopupFlow
|
||||
);
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// 팝업표시 상태
|
||||
@@ -186,46 +194,57 @@ export default function HomeBanner({
|
||||
|
||||
// 선택약관 팝업 표시 여부 ===================================================
|
||||
const shouldShowOptionalTermsPopup = useMemo(() => {
|
||||
console.log('[HomeBanner] Step 1: 상태 확인', {
|
||||
termsLoading,
|
||||
isGnbOpened,
|
||||
console.log("[HomeBanner] Step 1: 상태 확인", {
|
||||
termsLoading,
|
||||
isGnbOpened,
|
||||
optionalTermsAvailable,
|
||||
optionalTermsPopupFlow
|
||||
optionalTermsPopupFlow,
|
||||
});
|
||||
|
||||
|
||||
// 1. 기본 조건 확인
|
||||
if (termsLoading || isGnbOpened || !optionalTermsAvailable) {
|
||||
console.log('[HomeBanner] Early return: 기본 조건 불만족');
|
||||
console.log("[HomeBanner] Early return: 기본 조건 불만족");
|
||||
return false;
|
||||
}
|
||||
|
||||
// 2. 새로운 Redux 상태 확인 (TV 환경 최적화)
|
||||
if (optionalTermsPopupFlow.popupShown ||
|
||||
optionalTermsPopupFlow.userDecision ||
|
||||
optionalTermsPopupFlow.agreedInSession) {
|
||||
console.log('[HomeBanner] Early return: 이미 처리됨', optionalTermsPopupFlow);
|
||||
if (
|
||||
optionalTermsPopupFlow.popupShown ||
|
||||
optionalTermsPopupFlow.userDecision ||
|
||||
optionalTermsPopupFlow.agreedInSession
|
||||
) {
|
||||
console.log(
|
||||
"[HomeBanner] Early return: 이미 처리됨",
|
||||
optionalTermsPopupFlow
|
||||
);
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
// 3. 서버 데이터 확인
|
||||
const terms = termsData && termsData.data && termsData.data.terms;
|
||||
console.log('[HomeBanner] Step 2: termsData 확인', terms);
|
||||
console.log("[HomeBanner] Step 2: termsData 확인", terms);
|
||||
if (!terms) {
|
||||
console.log('[HomeBanner] Early return: terms가 존재하지 않음');
|
||||
console.log("[HomeBanner] Early return: terms가 존재하지 않음");
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
const optionalTerm = terms.find((term) => term.trmsTpCd === "MST00405");
|
||||
console.log('[HomeBanner] Step 3: optionalTerm 검색 결과', optionalTerm);
|
||||
|
||||
console.log("[HomeBanner] Step 3: optionalTerm 검색 결과", optionalTerm);
|
||||
|
||||
const result = optionalTerm
|
||||
? optionalTerm.trmsPopFlag === "Y" && optionalTerm.trmsAgrFlag === "N"
|
||||
: false;
|
||||
|
||||
console.log('[HomeBanner] Step 4: 최종 결과', result);
|
||||
|
||||
console.log("[HomeBanner] Step 4: 최종 결과", result);
|
||||
return result;
|
||||
}, [termsData, termsLoading, isGnbOpened, optionalTermsAvailable, optionalTermsPopupFlow]);
|
||||
|
||||
}, [
|
||||
termsData,
|
||||
termsLoading,
|
||||
isGnbOpened,
|
||||
optionalTermsAvailable,
|
||||
optionalTermsPopupFlow,
|
||||
]);
|
||||
|
||||
// 선택약관 팝업 표시 여부 ===================================================
|
||||
|
||||
const handleOptionalAgree = useCallback(() => {
|
||||
@@ -355,7 +374,7 @@ export default function HomeBanner({
|
||||
}
|
||||
} else if (
|
||||
bannerDetailInfos.find(
|
||||
(el) => el.shptmBanrTpNm === "LIVE" || el.shptmBanrTpNm === "VOD",
|
||||
(el) => el.shptmBanrTpNm === "LIVE" || el.shptmBanrTpNm === "VOD"
|
||||
)
|
||||
) {
|
||||
targetIndex = i;
|
||||
@@ -395,12 +414,12 @@ export default function HomeBanner({
|
||||
// 약관 데이터 로딩 중에는 아무것도 하지 않음
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
// 선택 약관 팝업을 띄워야 하는 경우
|
||||
if (shouldShowOptionalTermsPopup && !isOptionalConfirmVisible) {
|
||||
console.log("shouldShowOptionalTermsPopup", shouldShowOptionalTermsPopup);
|
||||
console.log("App.js optionalTermsConfirm 팝업 표시");
|
||||
|
||||
|
||||
const timer = setTimeout(() => {
|
||||
setIsOptionalConfirmVisible(true);
|
||||
// 팝업이 실제로 표시된 후에 Redux 상태 업데이트
|
||||
@@ -410,7 +429,12 @@ export default function HomeBanner({
|
||||
// 컴포넌트 언마운트 시 타이머 클리어
|
||||
return () => clearTimeout(timer);
|
||||
}
|
||||
}, [shouldShowOptionalTermsPopup, termsLoading, isOptionalConfirmVisible, dispatch]);
|
||||
}, [
|
||||
shouldShowOptionalTermsPopup,
|
||||
termsLoading,
|
||||
isOptionalConfirmVisible,
|
||||
dispatch,
|
||||
]);
|
||||
|
||||
// const renderItem = useCallback(
|
||||
// (index, isHorizontal) => {
|
||||
@@ -527,7 +551,7 @@ export default function HomeBanner({
|
||||
</div>
|
||||
);
|
||||
},
|
||||
[_handleItemFocus, _handleShelfFocus, bannerDataList],
|
||||
[_handleItemFocus, _handleShelfFocus, bannerDataList]
|
||||
);
|
||||
|
||||
// 1번째 배너(포커스 재생) 및 기타 배너를 위한 렌더링 함수
|
||||
@@ -579,7 +603,7 @@ export default function HomeBanner({
|
||||
</div>
|
||||
);
|
||||
},
|
||||
[_handleItemFocus, _handleShelfFocus, bannerDataList, selectTemplate],
|
||||
[_handleItemFocus, _handleShelfFocus, bannerDataList, selectTemplate]
|
||||
);
|
||||
|
||||
// 0번째 배너(영구 재생)를 위한 렌더링 함수
|
||||
@@ -595,7 +619,7 @@ export default function HomeBanner({
|
||||
</div>
|
||||
);
|
||||
},
|
||||
[_handleShelfFocus],
|
||||
[_handleShelfFocus]
|
||||
);
|
||||
|
||||
const renderSimpleVideoContainer = useCallback(
|
||||
@@ -610,7 +634,7 @@ export default function HomeBanner({
|
||||
</div>
|
||||
);
|
||||
},
|
||||
[_handleShelfFocus],
|
||||
[_handleShelfFocus]
|
||||
);
|
||||
|
||||
const renderLayout = useCallback(() => {
|
||||
@@ -618,7 +642,7 @@ export default function HomeBanner({
|
||||
case "DSP00201": {
|
||||
return (
|
||||
<>
|
||||
<ContainerBasic className={css.smallBox}>
|
||||
<ContainerBasic className={css.smallBox}>
|
||||
{renderItem(0, true)}
|
||||
{renderItem(1, true)}
|
||||
</ContainerBasic>
|
||||
|
||||
Reference in New Issue
Block a user