From c1804860e6e3c33883cabc28273f967e7aa6a9b9 Mon Sep 17 00:00:00 2001 From: "opacity@t-win.kr" Date: Wed, 25 Jun 2025 16:43:12 +0900 Subject: [PATCH 1/2] =?UTF-8?q?=EC=8B=A0=EA=B7=9C=ED=86=B5=ED=95=A9?= =?UTF-8?q?=EB=A1=9C=EA=B7=B8=20=ED=94=BC=EB=93=9C=EB=B0=B1=EB=B0=98?= =?UTF-8?q?=EC=98=81-=20pincode=20status=EA=B0=92=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CheckOutPanel/components/PinCodeInput.jsx | 25 +++++++++++-------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/com.twin.app.shoptime/src/views/CheckOutPanel/components/PinCodeInput.jsx b/com.twin.app.shoptime/src/views/CheckOutPanel/components/PinCodeInput.jsx index cf469922..98afc997 100644 --- a/com.twin.app.shoptime/src/views/CheckOutPanel/components/PinCodeInput.jsx +++ b/com.twin.app.shoptime/src/views/CheckOutPanel/components/PinCodeInput.jsx @@ -170,24 +170,27 @@ export default function PinCodeInput({ const onClickForgetPinCode = useCallback(() => { setPin(["", "", "", ""]); - dispatch(sendLogTotalRecommend({ - buttonTitle:"ForgetPINcode", - contextName:Config.LOG_CONTEXT_NAME.PINCODE, - messageId: Config.LOG_MESSAGE_ID.PINCODE - })) + dispatch( + sendLogTotalRecommend({ + buttonTitle: "ForgetPINcode", + contextName: Config.LOG_CONTEXT_NAME.PINCODE, + messageId: Config.LOG_MESSAGE_ID.PINCODE, + }) + ); dispatch(setShowPopup(Config.ACTIVE_POPUP.qrPopup2)); }, [dispatch]); const onClickConfirm = useCallback(() => { + const params = { + buttonTitle: "OK", + contextName: Config.LOG_CONTEXT_NAME.PINCODE, + messageId: Config.LOG_MESSAGE_ID.PINCODE, + }; if (pin.includes("")) { setErrorMsg($L("Please enter a PIN CODE.")); + dispatch(sendLogTotalRecommend({ ...params, status: "false" })); return; } - dispatch(sendLogTotalRecommend({ - buttonTitle:"OK", - contextName:Config.LOG_CONTEXT_NAME.PINCODE, - messageId: Config.LOG_MESSAGE_ID.PINCODE - })) setOkClicked(true); const pinString = pin.join(""); @@ -232,6 +235,7 @@ export default function PinCodeInput({ if (!isMounted.current) return; if (response.data.retCode === 0) { + dispatch(sendLogTotalRecommend({ ...params, status: "true" })); setIsOrderSuccessful(true); setPlaceOrderPopup(false); dispatch( @@ -256,6 +260,7 @@ export default function PinCodeInput({ } else { if (!isMounted.current) return; setErrorMsg($L("Your entries did not match. Please try again.")); // 핀코드 검증 단계 후 에러처리 + dispatch(sendLogTotalRecommend({ ...params, status: "false" })); } }; From 4fcb0729af16c5c077aeb9b5e5ac10d1f85cf026 Mon Sep 17 00:00:00 2001 From: "opacity@t-win.kr" Date: Thu, 26 Jun 2025 10:05:48 +0900 Subject: [PATCH 2/2] =?UTF-8?q?=EC=95=B1=20=EC=8B=A4=ED=96=89=EC=A7=81?= =?UTF-8?q?=ED=9B=84=20=EB=9D=BC=EC=9D=B4=EB=B8=8C=20=EB=B0=A9=EC=86=A1=20?= =?UTF-8?q?=ED=81=B4=EB=A6=AD=EC=8B=9C=20=EC=83=88=EB=A1=9C=EA=B3=A0?= =?UTF-8?q?=EC=B9=A8=20=ED=98=84=EC=83=81=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- com.twin.app.shoptime/src/App/App.js | 40 +++++++++---------- .../PlayerOverlay/PlayerOverlayContents.jsx | 4 ++ 2 files changed, 24 insertions(+), 20 deletions(-) diff --git a/com.twin.app.shoptime/src/App/App.js b/com.twin.app.shoptime/src/App/App.js index 81e97a9f..5d70482b 100644 --- a/com.twin.app.shoptime/src/App/App.js +++ b/com.twin.app.shoptime/src/App/App.js @@ -104,7 +104,7 @@ Spotlight.focus = function (elem, containerOption) { if (!floatLayerNode.contains(current)) { if (floatLayerNode.lastElementChild) { const spottableNode = floatLayerNode.lastElementChild.querySelector( - '[data-spotlight-container="true"]', + '[data-spotlight-container="true"]' ); if (spottableNode) { originFocus.apply(this, [spottableNode]); // this 바인딩을 유지하여 originFocus 호출 @@ -122,7 +122,7 @@ Spotlight.focus = function (elem, containerOption) { sendBroadCast({ type: "deActivateTab", moreInfo: { reason: "focus" }, - }), + }) ); } } @@ -135,15 +135,15 @@ function AppBase(props) { const httpHeader = useSelector((state) => state.common.httpHeader); const httpHeaderRef = useRef(httpHeader); const webOSVersion = useSelector( - (state) => state.common.appStatus.webOSVersion, + (state) => state.common.appStatus.webOSVersion ); const deviceId = useSelector((state) => state.common.appStatus.deviceId); const loginUserData = useSelector( - (state) => state.common.appStatus.loginUserData, + (state) => state.common.appStatus.loginUserData ); const loginUserDataRef = useRef(loginUserData); const cursorVisible = useSelector( - (state) => state.common.appStatus.cursorVisible, + (state) => state.common.appStatus.cursorVisible ); const introTermsAgree = useSelector((state) => state.common.introTermsAgree); // const optionalTermsAgree = useSelector((state) => state.common.optionalTermsAgree); @@ -161,7 +161,7 @@ function AppBase(props) { const introTermsAgreeRef = usePrevious(introTermsAgree); const logEnable = useSelector((state) => state.localSettings.logEnable); const oldDb8Deleted = useSelector( - (state) => state.localSettings.oldDb8Deleted, + (state) => state.localSettings.oldDb8Deleted ); // const macAddress = useSelector((state) => state.common.macAddress); @@ -191,7 +191,7 @@ function AppBase(props) { new Job((func) => { func(); console.log("hide cursor"); - }, 5000), + }, 5000) ); // 컴포넌트에서 모니터링 시작 - 한시적 모니터링 @@ -228,7 +228,7 @@ function AppBase(props) { dispatch( changeAppStatus({ cursorVisible: window.PalmSystem?.cursor?.visibility, - }), + }) ); } dispatch(getHomeMenu()); @@ -241,7 +241,7 @@ function AppBase(props) { console.log( "initService...{haveyInit, launchParams}", haveyInit, - JSON.stringify(launchParams), + JSON.stringify(launchParams) ); // pyh TODO: edit or delete later (line 196 ~ 198) @@ -256,7 +256,7 @@ function AppBase(props) { contextName: Config.LOG_CONTEXT_NAME.ENTRY, messageId: Config.LOG_MESSAGE_ID.ENTRY_INFO, entry_menu: "App", - }), + }) ); } @@ -266,12 +266,12 @@ function AppBase(props) { contextName: Config.LOG_CONTEXT_NAME.SHOPTIME, messageId: Config.LOG_MESSAGE_ID.VIEW_CHANGE, visible: true, - }), + }) ); clearLaunchParams(); } }, - [dispatch], + [dispatch] ); const handleRelaunchEvent = useCallback(() => { @@ -296,7 +296,7 @@ function AppBase(props) { foreGroundChangeTimer = setTimeout(() => { console.log( "visibility changed !!! ==> set to foreground cursorVisible", - JSON.stringify(window.PalmSystem?.cursor?.visibility), + JSON.stringify(window.PalmSystem?.cursor?.visibility) ); // eslint-disable-line no-console if (platform.platformName !== "webos") { //for debug @@ -304,14 +304,14 @@ function AppBase(props) { changeAppStatus({ isAppForeground: true, cursorVisible: !platform.touchscreen, - }), + }) ); } else if (typeof window === "object") { dispatch( changeAppStatus({ isAppForeground: true, cursorVisible: window.PalmSystem?.cursor?.visibility, - }), + }) ); } }, 1000); @@ -375,7 +375,7 @@ function AppBase(props) { dispatch( changeAppStatus({ showLoadingPanel: { show: true, type: "launching" }, - }), + }) ); } dispatch(checkFirstLaunch()); @@ -384,7 +384,7 @@ function AppBase(props) { getHomeTerms({ mbrNo: loginUserData.userNumber, trmsTpCdList: "MST00401, MST00402, MST00405", // 선택약관 추가 25.06 - }), + }) ); httpHeaderRef.current = httpHeader; @@ -424,7 +424,7 @@ function AppBase(props) { } else { // 필수 약관에 동의하지 않은 경우 dispatch( - pushPanel({ name: Config.panel_names.INTRO_PANEL, panelInfo: {} }), + pushPanel({ name: Config.panel_names.INTRO_PANEL, panelInfo: {} }) ); dispatch(changeAppStatus({ showLoadingPanel: { show: false } })); } @@ -444,7 +444,7 @@ function AppBase(props) { setDeepLink({ contentTarget: launchParmas.contentTarget, isDeepLink: true, - }), + }) ); } @@ -454,7 +454,7 @@ function AppBase(props) { deeplinkId: launchParmas.contentTarget ?? "", linkTpCd, logTpNo: Config.LOG_TP_NO.SECOND_LAYER, - }), + }) ); }, [dispatch, initService]); diff --git a/com.twin.app.shoptime/src/views/PlayerPanel/PlayerOverlay/PlayerOverlayContents.jsx b/com.twin.app.shoptime/src/views/PlayerPanel/PlayerOverlay/PlayerOverlayContents.jsx index ced985d8..e81f155f 100644 --- a/com.twin.app.shoptime/src/views/PlayerPanel/PlayerOverlay/PlayerOverlayContents.jsx +++ b/com.twin.app.shoptime/src/views/PlayerPanel/PlayerOverlay/PlayerOverlayContents.jsx @@ -132,6 +132,10 @@ export default function PlayerOverlayContents({ }, [panelInfo, sideContentsVisible]); const noLiveContentsVisible = useMemo(() => { + if (!Array.isArray(playListInfo) || playListInfo.length === 0) { + return false; + } + const noShowIdCount = playListInfo.filter((item) => !item.showId).length; if (playListInfo.length - 1 === noShowIdCount) { return false;