fix: IntroPanel간헐적 Agree미작동 해결, termsIdMap 추가

This commit is contained in:
djaco
2025-06-23 14:11:07 +09:00
parent 34f4795d86
commit 23f687606b
6 changed files with 231 additions and 32 deletions

View File

@@ -96,6 +96,7 @@ export default function HomeBanner({
}, [dispatch]);
const termsData = useSelector((state) => state.home.termsData);
const termsIdMap = useSelector((state) => state.home.termsIdMap);
const optionalTermsData = useSelector((state) =>
state.home.termsData?.data?.terms.find(
(term) => term.trmsTpCd === "MST00405",
@@ -128,35 +129,76 @@ export default function HomeBanner({
}, [termsData, termsLoading, isGnbOpened]);
const handleOptionalAgree = useCallback(() => {
console.log("handleAgree Click");
if (process.env.NODE_ENV === "development") {
console.log("[HomeBanner] handleAgree Click");
}
if (!termsIdMap || Object.keys(termsIdMap).length === 0) {
if (process.env.NODE_ENV === "development") {
console.error("[HomeBanner] termsIdMap이 없습니다:", termsIdMap);
}
return;
}
const requiredTermTypes = ["MST00401", "MST00402", "MST00405"];
const missingTerms = requiredTermTypes.filter(
(type) => !termsIdMap[type],
);
if (missingTerms.length > 0) {
if (process.env.NODE_ENV === "development") {
console.error("[HomeBanner] 누락된 약관 타입:", missingTerms);
}
return;
}
const termsList = [];
if (termsIdMap["MST00401"]) {
termsList.push(termsIdMap["MST00401"]); // 개인정보처리방침
}
if (termsIdMap["MST00402"]) {
termsList.push(termsIdMap["MST00402"]); // 이용약관
}
if (termsIdMap["MST00405"]) {
termsList.push(termsIdMap["MST00405"]); // 선택약관
}
// 약관 동의할 항목들 (string array)
const termsList = ["TID0000222", "TID0000223", "TID0000232"];
// 동의하지 않을 항목들 (빈 배열)
const notTermsList = [];
console.log("OptionalTermsConfirm -약관 동의 API 호출 파라미터:", {
termsList,
notTermsList,
});
if (process.env.NODE_ENV === "development") {
console.log("[HomeBanner] 현재 termsIdMap:", termsIdMap);
console.log("[HomeBanner] 약관 동의 API 호출 파라미터:", {
termsList,
notTermsList,
});
}
const callback = (response) => {
if (response.retCode === "000" || response.retCode === 0) {
console.log("약관 동의 성공:", response);
// 약관 정보 갱신
if (process.env.NODE_ENV === "development") {
console.log("[HomeBanner] 약관 동의 성공:", response);
}
dispatch(fetchCurrentUserHomeTerms());
} else {
console.error("약관 동의 실패:", response);
if (process.env.NODE_ENV === "development") {
console.error("[HomeBanner] 약관 동의 실패:", response);
}
}
};
console.log("OptionalTermsConfirm - 약관 동의 API 호출 payload:", {
termsList,
notTermsList,
});
if (process.env.NODE_ENV === "development") {
console.log("[HomeBanner] 약관 동의 API 호출 payload:", {
termsList,
notTermsList,
});
}
dispatch(setMyPageTermsAgree({ termsList, notTermsList }, callback));
}, [dispatch]);
}, [dispatch, termsIdMap]);
const handleOptionalTermsClick = useCallback(() => {
console.log("약관 자세히 보기 클릭");
console.log("[HomeBanner] 약관 자세히 보기 클릭");
setIsOptionalConfirmVisible(false);
setIsOptionalTermsVisible(true);
// 약관 상세 팝업을 띄우는 로직 추가
@@ -165,10 +207,10 @@ export default function HomeBanner({
const handleOptionalAgreeClick = useCallback(() => {
handleOptionalAgree();
setIsOptionalConfirmVisible(false);
}, []);
}, [handleOptionalAgree]);
const handleOptionalDeclineClick = useCallback(() => {
console.log("거절/다음에 하기 버튼 클릭");
console.log("[HomeBanner] 거절/다음에 하기 버튼 클릭");
setIsOptionalConfirmVisible(false);
// 거절 처리 로직 추가
}, []);
@@ -182,10 +224,10 @@ export default function HomeBanner({
// 선택약관 팝업 Agree
const handleTermsPopupAgree = useCallback(() => {
console.log("handleTermsPopupAgree");
console.log("[HomeBanner] handleTermsPopupAgree");
handleOptionalAgree();
setIsOptionalTermsVisible(false);
}, []);
}, [handleOptionalAgree]);
//------------------------------------------------------------------------------
const _handleShelfFocus = useCallback(() => {