diff --git a/com.twin.app.shoptime/src/actions/deviceActions.js b/com.twin.app.shoptime/src/actions/deviceActions.js index f48fa5f9..e44e5214 100644 --- a/com.twin.app.shoptime/src/actions/deviceActions.js +++ b/com.twin.app.shoptime/src/actions/deviceActions.js @@ -37,38 +37,45 @@ export const getAuthenticationCode = () => (dispatch, getState) => { }; // IF-LGSP-001 디바이스 등록 및 약관 동의 -export const registerDevice = (params) => (dispatch, getState) => { - const { agreeTerms } = params; +export const registerDevice = + (params, onSuccessCallback, onFailCallback) => (dispatch, getState) => { + const { agreeTerms } = params; - const onSuccess = (response) => { - console.log("registerDevice onSuccess: ", response.data); + const onSuccess = (response) => { + console.log("registerDevice onSuccess: ", response.data); - dispatch({ - type: types.REGISTER_DEVICE, - payload: response.data.data, - retCode: response.data.retCode, - }); - dispatch(getAuthenticationCode()); - dispatch(fetchCurrentUserHomeTerms()); + dispatch({ + type: types.REGISTER_DEVICE, + payload: response.data.data, + retCode: response.data.retCode, + }); + dispatch(getAuthenticationCode()); + dispatch(fetchCurrentUserHomeTerms()); + if (onSuccessCallback) { + onSuccessCallback(response.data); + } + }; + + const onFail = (error) => { + console.error("registerDevice onFail: ", error); + if (onFailCallback) { + onFailCallback(error); + } + }; + + TAxios( + dispatch, + getState, + "post", + URLS.REGISTER_DEVICE, + {}, + { agreeTerms }, + onSuccess, + onFail, + true + ); }; - const onFail = (error) => { - console.error("registerDevice onFail: ", error); - }; - - TAxios( - dispatch, - getState, - "post", - URLS.REGISTER_DEVICE, - {}, - { agreeTerms }, - onSuccess, - onFail, - true - ); -}; - // 디바이스 부가 정보 저장 (IF-LGSP-002) export const registerDeviceInfo = (params) => (dispatch, getState) => { const { evntTpCd, evntId, evntApplcnFlag, entryMenu, mbphNo } = params; diff --git a/com.twin.app.shoptime/src/actions/eventActions.js b/com.twin.app.shoptime/src/actions/eventActions.js index b40f4fd0..da2801d8 100644 --- a/com.twin.app.shoptime/src/actions/eventActions.js +++ b/com.twin.app.shoptime/src/actions/eventActions.js @@ -3,33 +3,41 @@ import { TAxios } from "../api/TAxios"; import { types } from "./actionTypes"; // 이벤트 정보 조회 IF-LGSP-070 -export const getWelcomeEventInfo = () => (dispatch, getState) => { - const onSuccess = (response) => { - console.log("getWelcomeEventInfo onSuccess ", response.data); +export const getWelcomeEventInfo = + (onSuccessCallback, onFailCallback) => (dispatch, getState) => { + const onSuccess = (response) => { + console.log("getWelcomeEventInfo onSuccess ", response.data); - dispatch({ - type: types.GET_WELCOME_EVENT_INFO, - payload: response.data.data, - retCode: response.data.retCode, - }); + dispatch({ + type: types.GET_WELCOME_EVENT_INFO, + payload: response.data.data, + retCode: response.data.retCode, + }); + + if (onSuccessCallback) { + onSuccessCallback(response.data); + } + }; + + const onFail = (error) => { + console.error("getWelcomeEventInfo onFail ", error); + if (onFailCallback) { + onFailCallback(error); + } + }; + + TAxios( + dispatch, + getState, + "get", + URLS.GET_WELCOME_EVENT_INFO, + {}, + {}, + onSuccess, + onFail + ); }; - const onFail = (error) => { - console.error("getWelcomeEventInfo onFail ", error); - }; - - TAxios( - dispatch, - getState, - "get", - URLS.GET_WELCOME_EVENT_INFO, - {}, - {}, - onSuccess, - onFail - ); -}; - // 이벤트(쿠폰) 지급 요청 (IF-LGSP-071) export const setEventIssueReq = (params) => (dispatch, getState) => { const { evntTpCd, evntId, mbphNo, cntryCd } = params; diff --git a/com.twin.app.shoptime/src/components/TPopUp/TPopUp.module.less b/com.twin.app.shoptime/src/components/TPopUp/TPopUp.module.less index 187cb5ca..6522879e 100644 --- a/com.twin.app.shoptime/src/components/TPopUp/TPopUp.module.less +++ b/com.twin.app.shoptime/src/components/TPopUp/TPopUp.module.less @@ -183,7 +183,7 @@ &.optionItem { display: flex; - color: red; + color: @PRIMARY_COLOR_RED; } } @@ -358,10 +358,10 @@ .textLayer { width: 100%; padding-bottom: 35px; - border-bottom: 1px solid #dadada; + border-bottom: 1px solid @COLOR_GRAY02; .text { min-height: 126px; - color: #1a1a1a; + color: @COLOR_GRAY08; font-size: 36px; line-height: 42px; text-align: left; @@ -384,10 +384,10 @@ height: 300px; } &::-webkit-scrollbar-track-piece { - background-color: #fff; + background-color: @COLOR_WHITE; } &::-webkit-scrollbar-thumb { - background-color: #7a808d; + background-color: @COLOR_GRAY04; } } } @@ -403,7 +403,7 @@ background: @COLOR_GRAY09; font-size: 30px; &:focus { - box-shadow: 0px 18px 28.2px 1.8px rgba(62, 59, 59, 0.4); + outline: 4px solid @PRIMARY_COLOR_RED; background-color: @PRIMARY_COLOR_RED; color: @COLOR_WHITE; } @@ -428,7 +428,7 @@ background: @COLOR_GRAY09; font-size: 30px; &:focus { - box-shadow: 0px 18px 28.2px 1.8px rgba(62, 59, 59, 0.4); + outline: 4px solid @PRIMARY_COLOR_RED; background-color: @PRIMARY_COLOR_RED; color: @COLOR_WHITE; } @@ -471,7 +471,7 @@ align-items: center; margin-right: 60px; .title { - color: #333; + color: @COLOR_GRAY06; font-size: 36px; font-weight: bold; margin-bottom: 12px; @@ -490,7 +490,7 @@ } .text { - color: #1a1a1a; + color: @COLOR_GRAY08; font-size: 24px; text-align: left; font-weight: normal; @@ -513,7 +513,7 @@ font-size: 24px; line-height: 60px; &:focus { - box-shadow: 0px 18px 28.2px 1.8px rgba(62, 59, 59, 0.4); + outline: 4px solid @PRIMARY_COLOR_RED; background-color: @PRIMARY_COLOR_RED; color: @COLOR_WHITE; } diff --git a/com.twin.app.shoptime/src/views/IntroPanel/IntroPanel.new.jsx b/com.twin.app.shoptime/src/views/IntroPanel/IntroPanel.new.jsx index 3cca51d4..45ae14b2 100644 --- a/com.twin.app.shoptime/src/views/IntroPanel/IntroPanel.new.jsx +++ b/com.twin.app.shoptime/src/views/IntroPanel/IntroPanel.new.jsx @@ -244,8 +244,7 @@ export default function IntroPanel({ }, [dispatch]); const handleAgree = useCallback(() => { - - if(isProcessing) return; + if (isProcessing) return; // 필수 약관이 체크되어 있는지 확인 if (!termsChecked || !privacyChecked) { @@ -278,24 +277,89 @@ export default function IntroPanel({ console.log('최종 전송될 agreeTerms:', agreeTerms); - // registerDevice 호출 - 필수 + 선택 약관 모두 포함 - dispatch(registerDevice({ - agreeTerms: agreeTerms - })); - // dispatch(fetchCurrentUserHomeTerms()); // 중복호출 방지 - setIsProcessing(false); - }, [termsChecked, privacyChecked, optionalChecked, dispatch]); + dispatch( + registerDevice( + { agreeTerms: agreeTerms }, + (regDeviceData) => { + if (regDeviceData && regDeviceData.retCode === 0) { + dispatch( + getWelcomeEventInfo((eventInfos) => { + if ( + eventInfos && + Object.keys(eventInfos.data).length > 0 && + webOSVersion + ) { + let displayWelcomeEventPanel = false; + + if ( + eventInfos.data?.welcomeEventFlag === "Y" || + (eventInfos.data?.welcomeBillCpnEventFlag === "Y" && + Number(webOSVersion) >= 6) + ) { + displayWelcomeEventPanel = true; + } + + dispatch( + sendLogTerms({ logTpNo: Config.LOG_TP_NO.TERMS.AGREE }) + ); + + if (displayWelcomeEventPanel) { + dispatch( + pushPanel({ + name: panel_names.WELCOME_EVENT_PANEL, + panelInfo: { eventInfos: eventInfos.data }, + }) + ); + } + } + dispatch(popPanel(panel_names.INTRO_PANEL)); + setIsProcessing(false); + }) + ); + } else { + dispatch( + setShowPopup(Config.ACTIVE_POPUP.alertPopup, { + title: $L("Error"), + text: $L("Device registration failed. Please try again."), + button1Text: $L("OK"), + }) + ); + setIsProcessing(false); + } + }, + () => { + dispatch( + setShowPopup(Config.ACTIVE_POPUP.alertPopup, { + title: $L("Error"), + text: $L("Device registration failed. Please try again."), + button1Text: $L("OK"), + }) + ); + setIsProcessing(false); + } + ) + ); + }, [ + termsChecked, + privacyChecked, + optionalChecked, + dispatch, + isProcessing, + webOSVersion, + ]); // 실패 감지를 위한 useEffect 추가 useEffect(() => { // isProcessing이 true일 때만 실패 체크 (= handleAgree 클릭 후에만) if (isProcessing && regDeviceData && regDeviceData.retCode !== 0) { - console.error('registerDevice 실패:', regDeviceData); - dispatch(setShowPopup(Config.ACTIVE_POPUP.alertPopup, { - title: $L("Error"), - text: $L("Device registration failed. Please try again."), - button1Text: $L("OK") - })); + console.error("registerDevice 실패:", regDeviceData); + dispatch( + setShowPopup(Config.ACTIVE_POPUP.alertPopup, { + title: $L("Error"), + text: $L("Device registration failed. Please try again."), + button1Text: $L("OK"), + }) + ); setIsProcessing(false); } }, [regDeviceData, dispatch, isProcessing]); // isProcessing 의존성 추가 @@ -384,7 +448,6 @@ export default function IntroPanel({
{$L("Required Consent")}
{$L("(Necessary for using the service)")}
-{$L("Thank you for agreeing to required terms!")}