// src/components/Optional/OptionalTermsConfirm.jsx import React, { useCallback, useState, } from 'react'; import { useDispatch, useSelector, } from 'react-redux'; import { setHidePopup } from '../../actions/commonActions'; import { setMyPageTermsAgree } from '../../actions/myPageActions'; import { $L, scaleH, scaleW, } from '../../utils/helperMethods'; import TButton from '../TButton/TButton'; import TButtonScroller from '../TButtonScroller/TButtonScroller'; import TCheckBoxSquare from '../TCheckBox/TCheckBoxSquare'; import TPopUp from '../TPopUp/TPopUp'; import css from './OptionalTermsConfirm.module.less'; const OptionalTermsConfirm = ({ open }) => { const dispatch = useDispatch(); const [isChecked, setIsChecked] = useState(false); const [isTermsPopupVisible, setIsTermsPopupVisible] = useState(false); const [isWarningPopupVisible, setIsWarningPopupVisible] = useState(false); const optionalTermsData = useSelector((state) => state.home.termsData?.data?.terms.find(term => term.trmsTpCd === "MST00405") ); const handleMainPopupClose = useCallback(() => { dispatch(setHidePopup()); }, [dispatch]); const handleCheckboxToggle = useCallback(({ selected }) => { setIsChecked(selected); }, []); const handleViewTermsClick = useCallback(() => { setIsTermsPopupVisible(true); }, []); const handleCloseTermsPopup = useCallback((e) => { if (e) { e.stopPropagation(); } setIsTermsPopupVisible(false); }, []); const handleAgree = useCallback(() => { if (isChecked) { // 약관 동의할 항목들 (string array) const termsList = ["TID0000222", "TID0000223", "TID0000232"]; // 동의하지 않을 항목들 (빈 배열) const notTermsList = []; console.log('OptionalTermsConfirm -약관 동의 API 호출 파라미터:', { termsList, notTermsList }); const callback = (response) => { if (response.retCode === "000" || response.retCode === 0) { console.log('약관 동의 성공:', response); } else { console.error('약관 동의 실패:', response); } }; console.log('OptionalTermsConfirm - 약관 동의 API 호출 payload:', { termsList, notTermsList }); dispatch(setMyPageTermsAgree({ termsList, notTermsList }, callback)); dispatch(setHidePopup()); } else { setIsWarningPopupVisible(true); } }, [isChecked, dispatch]); const handleCloseWarningPopup = useCallback(() => { setIsWarningPopupVisible(false); }, []); const handleDontAskAgain = useCallback(() => { console.log("Don't Ask Again 처리 필요"); dispatch(setHidePopup()); },[dispatch]); if (isTermsPopupVisible) { return ( {optionalTermsData && (
{$L("Optional Terms")}
)} ); } if (isWarningPopupVisible) { return ( ); } return (
Optional Terms
Get recommendations, special offers, and ads tailored just for you.
{$L('Agree')} {$L('Not Now')} {$L("Don't Ask Again")}
); }; export default OptionalTermsConfirm;