diff --git a/com.twin.app.shoptime/src/actions/playActions.js b/com.twin.app.shoptime/src/actions/playActions.js index 71eea907..22449125 100644 --- a/com.twin.app.shoptime/src/actions/playActions.js +++ b/com.twin.app.shoptime/src/actions/playActions.js @@ -5,20 +5,11 @@ import { TAxios } from '../api/TAxios'; import { panel_names } from '../utils/Config'; import { types } from './actionTypes'; import { popPanel, pushPanel, updatePanel } from './panelActions'; +import { createDebugHelpers } from '../utils/debug'; +// 디버그 헬퍼 설정 const DEBUG_MODE = false; - -const dlog = (...args) => { - if (DEBUG_MODE) console.log(...args); -}; - -const dwarn = (...args) => { - if (DEBUG_MODE) console.warn(...args); -}; - -const derror = (...args) => { - console.error(...args); -}; +const { dlog, dwarn, derror } = createDebugHelpers(DEBUG_MODE); // 🔽 [251116] 새로운 비디오 상태 관리 시스템 - 재생 상태 export const PLAYBACK_STATUS = { diff --git a/com.twin.app.shoptime/src/actions/productActions.js b/com.twin.app.shoptime/src/actions/productActions.js index fe0b7797..62c1d926 100644 --- a/com.twin.app.shoptime/src/actions/productActions.js +++ b/com.twin.app.shoptime/src/actions/productActions.js @@ -3,6 +3,7 @@ import { TAxios } from '../api/TAxios'; import { types } from './actionTypes'; import { changeAppStatus } from './commonActions'; import { reduce, set, get } from '../utils/fp'; +import { createDebugHelpers } from '../utils/debug'; // CustomerImages용 리뷰 이미지 import import reviewSampleImage from '../../assets/images/image-review-sample-1.png'; @@ -10,16 +11,8 @@ import reviewSampleImage from '../../assets/images/image-review-sample-1.png'; // DEBUG_MODE - true인 경우에만 로그 출력 const DEBUG_MODE = false; -// Local debug helpers (matches src/lunaSend/common.js pattern) -const dlog = (...args) => { - if (DEBUG_MODE) console.log(...args); -}; -const dwarn = (...args) => { - if (DEBUG_MODE) console.warn(...args); -}; -const derror = (...args) => { - if (DEBUG_MODE) console.error(...args); -}; +// 이 파일의 DEBUG_MODE를 사용하여 헬퍼 생성 +const { dlog, dwarn, derror } = createDebugHelpers(DEBUG_MODE); // Best Seller 상품 목록 조회 IF-LGSP-303 // FP helpers diff --git a/com.twin.app.shoptime/src/components/VideoPlayer/VideoPlayer.js b/com.twin.app.shoptime/src/components/VideoPlayer/VideoPlayer.js index bb589a8d..292f1e40 100644 --- a/com.twin.app.shoptime/src/components/VideoPlayer/VideoPlayer.js +++ b/com.twin.app.shoptime/src/components/VideoPlayer/VideoPlayer.js @@ -48,6 +48,7 @@ import Touchable from '@enact/ui/Touchable'; import { panel_names } from '../../utils/Config'; import { $L } from '../../utils/helperMethods'; +import { createDebugHelpers } from '../../utils/debug'; import { SpotlightIds } from '../../utils/SpotlightIds'; import ThemeIndicator from '../../views/DetailPanel/components/indicator/ThemeIndicator'; import ThemeIndicatorArrow from '../../views/DetailPanel/components/indicator/ThemeIndicatorArrow'; @@ -66,20 +67,9 @@ import Video from './Video'; import css from './VideoPlayer.module.less'; import { updateVideoPlayState } from '../../actions/playActions'; -// Toggle debug logging for this module +// 디버그 헬퍼 설정 const DEBUG_MODE = false; - -const dlog = (...args) => { - if (DEBUG_MODE) console.log(...args); -}; - -const dwarn = (...args) => { - if (DEBUG_MODE) console.warn(...args); -}; - -const derror = (...args) => { - console.error(...args); -}; +const { dlog, dwarn, derror } = createDebugHelpers(DEBUG_MODE); const isEnter = is('enter'); const isLeft = is('left'); diff --git a/com.twin.app.shoptime/src/hooks/useFocusHistory/useFocusHistory.js b/com.twin.app.shoptime/src/hooks/useFocusHistory/useFocusHistory.js index d8e50622..df23be1e 100644 --- a/com.twin.app.shoptime/src/hooks/useFocusHistory/useFocusHistory.js +++ b/com.twin.app.shoptime/src/hooks/useFocusHistory/useFocusHistory.js @@ -2,21 +2,13 @@ import { useRef, useCallback, useState, useMemo } from 'react'; import fp from '../../utils/fp.js'; +import { createDebugHelpers } from '../../utils/debug'; // Toggle debug logging in this file (false by default) const DEBUG_MODE = false; -const dlog = (...args) => { - if (DEBUG_MODE) console.log(...args); -}; - -const dwarn = (...args) => { - if (DEBUG_MODE) console.warn(...args); -}; - -const derror = (...args) => { - console.error(...args); -}; +// 이 파일의 DEBUG_MODE를 사용하여 헬퍼 생성 +const { dlog, dwarn, derror, debugIf } = createDebugHelpers(DEBUG_MODE); /** * useFocusHistory Hook - 경량화된 포커스 히스토리 관리 diff --git a/com.twin.app.shoptime/src/lunaSend/common.js b/com.twin.app.shoptime/src/lunaSend/common.js index 708267ff..57f4856b 100644 --- a/com.twin.app.shoptime/src/lunaSend/common.js +++ b/com.twin.app.shoptime/src/lunaSend/common.js @@ -2,21 +2,11 @@ import appinfo from '../../webos-meta/appinfo.json'; import { alertToast } from '../actions/commonActions'; import { store } from '../store/store'; import LS2Request from './LS2Request'; +import { createDebugHelpers } from '../utils/debug'; -// Toggle debug logging for this module (false by default) +// 디버그 헬퍼 설정 const DEBUG_MODE = false; - -const dlog = (...args) => { - if (DEBUG_MODE) console.log(...args); -}; - -const dwarn = (...args) => { - if (DEBUG_MODE) console.warn(...args); -}; - -const derror = (...args) => { - console.error(...args); -}; +const { dlog, dwarn, derror } = createDebugHelpers(DEBUG_MODE); export const getConnectionStatus = ({ onSuccess, onFailure, onComplete }) => { if (typeof window === 'object' && !window.PalmSystem) { diff --git a/com.twin.app.shoptime/src/reducers/panelReducer.js b/com.twin.app.shoptime/src/reducers/panelReducer.js index dabb2c3f..953409f3 100644 --- a/com.twin.app.shoptime/src/reducers/panelReducer.js +++ b/com.twin.app.shoptime/src/reducers/panelReducer.js @@ -1,20 +1,10 @@ import { types } from '../actions/actionTypes'; import { panel_names } from '../utils/Config'; +import { createDebugHelpers } from '../utils/debug'; -// Toggle debug logging for this reducer +// 디버그 헬퍼 설정 const DEBUG_MODE = false; - -const dlog = (...args) => { - if (DEBUG_MODE) console.log(...args); -}; - -const dwarn = (...args) => { - if (DEBUG_MODE) console.warn(...args); -}; - -const derror = (...args) => { - console.error(...args); -}; +const { dlog, dwarn, derror } = createDebugHelpers(DEBUG_MODE); const initialState = { // 기존 상태 - 완전히 호환됨 diff --git a/com.twin.app.shoptime/src/utils/debug.js b/com.twin.app.shoptime/src/utils/debug.js new file mode 100644 index 00000000..adba6d51 --- /dev/null +++ b/com.twin.app.shoptime/src/utils/debug.js @@ -0,0 +1,53 @@ +/** + * Shared Debug Utilities + * + * 사용 방법: + * + * 1. 각 파일에서 DEBUG_MODE 정의: + * const DEBUG_MODE = false; // 또는 true + * + * 2. 헬퍼들을 createDebugHelpers로 감싸기: + * import { createDebugHelpers } from '../utils/debug'; + * const { dlog, dwarn, derror } = createDebugHelpers(DEBUG_MODE); + * + * 3. 사용: + * dlog('message', data); // DEBUG_MODE가 true일 때만 실행 + * dwarn('warning'); + * derror('error'); + * + * 각 파일마다 독립적인 DEBUG_MODE를 유지하면서 헬퍼 코드는 공유됩니다. + */ + +/** + * 디버그 헬퍼 팩토리 함수 + * 각 파일에서 자신의 DEBUG_MODE를 전달하여 고유한 헬퍼 인스턴스 생성 + * @param {boolean} debugMode - 해당 파일의 DEBUG_MODE 값 + * @returns {object} { dlog, dwarn, derror } 헬퍼 함수들 + */ +export const createDebugHelpers = (debugMode = false) => ({ + dlog: (...args) => { + if (debugMode) console.log(...args); + }, + dwarn: (...args) => { + if (debugMode) console.warn(...args); + }, + derror: (...args) => { + if (debugMode) console.error(...args); + }, + debugIf: (callback) => { + if (debugMode && typeof callback === 'function') callback(); + }, +}); + +/** + * 간단한 버전 (기존 방식과 호환) + * 개별 헬퍼들을 직접 export (하지만 일반적으로 createDebugHelpers 권장) + */ +export const createSimpleHelpers = () => { + // 기본값으로는 모두 비활성화 (각 파일에서 명시적으로 활성화해야 함) + return { + dlog: () => {}, + dwarn: () => {}, + derror: () => {}, + }; +}; diff --git a/com.twin.app.shoptime/src/views/HomePanel/HomePanel.jsx b/com.twin.app.shoptime/src/views/HomePanel/HomePanel.jsx index 5ef3e078..0e024f02 100644 --- a/com.twin.app.shoptime/src/views/HomePanel/HomePanel.jsx +++ b/com.twin.app.shoptime/src/views/HomePanel/HomePanel.jsx @@ -52,21 +52,11 @@ import { useFocusHistory } from '../../hooks/useFocusHistory/useFocusHistory'; import usePrevious from '../../hooks/usePrevious'; import { useVideoPlay } from '../../hooks/useVideoPlay/useVideoPlay'; import ImagePreloader from '../../utils/ImagePreloader'; +import { createDebugHelpers } from '../../utils/debug'; -// Toggle debug logging for this module (false by default) +// 디버그 헬퍼 설정 const DEBUG_MODE = false; - -const dlog = (...args) => { - if (DEBUG_MODE) console.log(...args); -}; - -const dwarn = (...args) => { - if (DEBUG_MODE) console.warn(...args); -}; - -const derror = (...args) => { - console.error(...args); -}; +const { dlog, dwarn, derror } = createDebugHelpers(DEBUG_MODE); // DetailPanelBackground 이미지 imports for preloading import hsn from '../../../assets/images/bg/hsn_new.png'; diff --git a/com.twin.app.shoptime/src/views/MyPagePanel/MyPageSub/TermsOfService/TermsOfOptional.jsx b/com.twin.app.shoptime/src/views/MyPagePanel/MyPageSub/TermsOfService/TermsOfOptional.jsx index 5225cdbb..68579862 100644 --- a/com.twin.app.shoptime/src/views/MyPagePanel/MyPageSub/TermsOfService/TermsOfOptional.jsx +++ b/com.twin.app.shoptime/src/views/MyPagePanel/MyPageSub/TermsOfService/TermsOfOptional.jsx @@ -13,6 +13,7 @@ import React, { useCallback, useEffect, useState, useMemo } from 'react'; import { useDispatch, useSelector } from 'react-redux'; import Spotlight from '@enact/spotlight'; +import { createDebugHelpers } from '../../../../utils/debug'; import { setHidePopup, @@ -51,6 +52,10 @@ import TPanel from '../../../../components/TPanel/TPanel'; import TermsPopup from './TermsPopup'; import OptionalTermsInfo from './OptionalTermsInfo'; +// 디버그 헬퍼 설정 +const DEBUG_MODE = false; +const { dlog, dwarn, derror } = createDebugHelpers(DEBUG_MODE); + // SVG 아이콘 컴포넌트 const ExpandIcon = ({ className }) => ( ( ); -// Local debug helpers (matches src/lunaSend/common.js pattern) -const DEBUG_MODE = false; -const dlog = (...args) => { - if (DEBUG_MODE) console.log(...args); -}; -const dwarn = (...args) => { - if (DEBUG_MODE) console.warn(...args); -}; -const derror = (...args) => { - if (DEBUG_MODE) console.error(...args); -}; - // 혜택 이미지 컴포넌트 const BenefitImage = ({ className, onClick }) => { return ( diff --git a/com.twin.app.shoptime/src/views/PlayerPanel/PlayerPanel.jsx b/com.twin.app.shoptime/src/views/PlayerPanel/PlayerPanel.jsx index 86a264e9..408c818e 100644 --- a/com.twin.app.shoptime/src/views/PlayerPanel/PlayerPanel.jsx +++ b/com.twin.app.shoptime/src/views/PlayerPanel/PlayerPanel.jsx @@ -9,6 +9,7 @@ import SpotlightContainerDecorator from '@enact/spotlight/SpotlightContainerDeco import { setContainerLastFocusedElement } from '@enact/spotlight/src/container'; import dummyVtt from '../../../assets/mock/video.vtt'; +import { createDebugHelpers } from '../../utils/debug'; import { changeAppStatus, changeLocalSettings, @@ -66,20 +67,9 @@ import TabContainerV2 from './PlayerTabContents/v2/TabContainer.v2'; const Container = SpotlightContainerDecorator({ enterTo: 'last-focused', preserveId: true }, 'div'); -// Toggle debug logging for this view +// 디버그 헬퍼 설정 const DEBUG_MODE = false; - -const dlog = (...args) => { - if (DEBUG_MODE) console.log(...args); -}; - -const dwarn = (...args) => { - if (DEBUG_MODE) console.warn(...args); -}; - -const derror = (...args) => { - console.error(...args); -}; +const { dlog, dwarn, derror } = createDebugHelpers(DEBUG_MODE); const findSelector = (selector, maxAttempts = 5, currentAttempts = 0) => { try {