Files
shoptime/com.twin.app.shoptime/src/actions/mockCartActions.js
optrader 741c4338ca [251124] fix: Log정리-5
🕐 커밋 시간: 2025. 11. 24. 12:43:58

📊 변경 통계:
  • 총 파일: 40개
  • 추가: +774줄
  • 삭제: -581줄

📝 수정된 파일:
  ~ com.twin.app.shoptime/src/actions/appDataActions.js
  ~ com.twin.app.shoptime/src/actions/billingActions.js
  ~ com.twin.app.shoptime/src/actions/brandActions.js
  ~ com.twin.app.shoptime/src/actions/cancelActions.js
  ~ com.twin.app.shoptime/src/actions/cardActions.js
  ~ com.twin.app.shoptime/src/actions/cartActions.js
  ~ com.twin.app.shoptime/src/actions/checkoutActions.js
  ~ com.twin.app.shoptime/src/actions/commonActions.js
  ~ com.twin.app.shoptime/src/actions/convertActions.js
  ~ com.twin.app.shoptime/src/actions/couponActions.js
  ~ com.twin.app.shoptime/src/actions/deviceActions.js
  ~ com.twin.app.shoptime/src/actions/empActions.js
  ~ com.twin.app.shoptime/src/actions/eventActions.js
  ~ com.twin.app.shoptime/src/actions/forYouActions.js
  ~ com.twin.app.shoptime/src/actions/homeActions.js
  ~ com.twin.app.shoptime/src/actions/logActions.js
  ~ com.twin.app.shoptime/src/actions/mediaActions.js
  ~ com.twin.app.shoptime/src/actions/mockCartActions.js
  ~ com.twin.app.shoptime/src/actions/myPageActions.js
  ~ com.twin.app.shoptime/src/actions/onSaleActions.js
  ~ com.twin.app.shoptime/src/actions/orderActions.js
  ~ com.twin.app.shoptime/src/actions/panelActions.js
  ~ com.twin.app.shoptime/src/actions/panelNavigationActions.js
  ~ com.twin.app.shoptime/src/actions/pinCodeActions.js
  ~ com.twin.app.shoptime/src/actions/productActions.js
  ~ com.twin.app.shoptime/src/actions/queuedPanelActions.js
  ~ com.twin.app.shoptime/src/actions/searchActions.js
  ~ com.twin.app.shoptime/src/actions/shippingActions.js
  ~ com.twin.app.shoptime/src/actions/voiceActions.js
  ~ com.twin.app.shoptime/src/actions/webSpeechActions.js
  ~ com.twin.app.shoptime/src/reducers/localSettingsReducer.js
  ~ com.twin.app.shoptime/src/reducers/mediaOverlayReducer.js
  ~ com.twin.app.shoptime/src/reducers/mockCartReducer.js
  ~ com.twin.app.shoptime/src/reducers/playReducer.js
  ~ com.twin.app.shoptime/src/reducers/productReducer.js
  ~ com.twin.app.shoptime/src/reducers/videoOverlayReducer.js
  ~ com.twin.app.shoptime/src/views/UserReview/ShowUserReviews.jsx
  ~ com.twin.app.shoptime/src/views/UserReview/UserReviewPanel.jsx
  ~ com.twin.app.shoptime/src/views/UserReview/components/UserReviewsList.jsx
  ~ com.twin.app.shoptime/src/views/UserReview/components/VirtualScrollBar.jsx

🔧 함수 변경 내용:
  📊 Function-level changes summary across 40 files:
    • Functions added: 14
    • Functions modified: 34
    • Functions deleted: 18
  📋 By language:
    • javascript: 40 files, 66 function changes

🔧 주요 변경 내용:
  • 핵심 비즈니스 로직 개선
  • 로깅 시스템 개선
  • 설정 관리 시스템 개선
  • UI 컴포넌트 아키텍처 개선
2025-11-24 12:47:57 +09:00

239 lines
6.0 KiB
JavaScript

import { BUYNOW_CONFIG } from '../utils/BuyNowConfig';
import {
createMockCartListData,
createMockCartData,
addMockCartItem,
removeMockCartItem,
updateMockCartItemQuantity,
} from '../utils/BuyNowDataManipulator';
import { createDebugHelpers } from '../utils/debug';
// 디버그 헬퍼 설정
const DEBUG_MODE = false;
const { dlog, dwarn, derror } = createDebugHelpers(DEBUG_MODE);
// Mock Cart Action Types
export const MOCK_CART_TYPES = {
INIT_MOCK_CART: 'mockCart/INIT_MOCK_CART',
ADD_TO_MOCK_CART: 'mockCart/ADD_TO_MOCK_CART',
REMOVE_FROM_MOCK_CART: 'mockCart/REMOVE_FROM_MOCK_CART',
UPDATE_MOCK_CART_ITEM: 'mockCart/UPDATE_MOCK_CART_ITEM',
CLEAR_MOCK_CART: 'mockCart/CLEAR_MOCK_CART',
SET_MOCK_CART_QUANTITY: 'mockCart/SET_MOCK_CART_QUANTITY',
UPDATE_SELECTED_ITEMS: 'mockCart/UPDATE_SELECTED_ITEMS',
};
/**
* Mock 장바구니 초기화
* BuyOption에서 ADD TO CART 시 호출 - 기존 장바구니에 상품 추가
*/
export const initializeMockCart =
(productData, optionInfo = {}, quantity = 1) =>
(dispatch, getState) => {
if (!BUYNOW_CONFIG.isMockMode()) {
return;
}
dlog('[MockCartActions] initializeMockCart - productData:', productData);
// 기존 장바구니 데이터 확인
const currentCart = getState().mockCart.cartInfo || [];
dlog('[MockCartActions] initializeMockCart - current cart items:', currentCart.length);
// 새 상품 데이터 생성
const newCartItem = createMockCartData(productData, optionInfo, quantity);
if (newCartItem) {
// addToMockCart를 사용하여 기존 장바구니에 상품 추가 (덮어쓰기 방지)
dispatch(addToMockCart(productData, optionInfo, quantity));
} else {
dlog('[MockCartActions] initializeMockCart - Failed to create cart item');
}
};
/**
* Mock 장바구니에 상품 추가
* @param {Object} productData - 상품 데이터
* @param {Object} optionInfo - 옵션 정보
* @param {number} quantity - 수량
*/
export const addToMockCart =
(productData, optionInfo = {}, quantity = 1) =>
(dispatch, getState) => {
if (!BUYNOW_CONFIG.isMockMode()) {
return;
}
dlog('[MockCartActions] addToMockCart - productData:', productData);
// Mock 장바구니 데이터 생성
const newCartItem = addMockCartItem(productData, optionInfo, quantity);
dispatch({
type: MOCK_CART_TYPES.ADD_TO_MOCK_CART,
payload: {
item: newCartItem,
lastAction: {
type: 'add',
data: newCartItem,
timestamp: Date.now(),
},
},
});
};
/**
* Mock 장바구니에서 상품 제거
* @param {string} prodSno - 상품 고유번호
*/
export const removeFromMockCart = (prodSno) => (dispatch, getState) => {
if (!BUYNOW_CONFIG.isMockMode()) {
return;
}
dlog('[MockCartActions] removeFromMockCart - prodSno:', prodSno);
dispatch({
type: MOCK_CART_TYPES.REMOVE_FROM_MOCK_CART,
payload: {
prodSno,
lastAction: {
type: 'remove',
data: { prodSno },
timestamp: Date.now(),
},
},
});
};
/**
* Mock 장바구니 상품 수량 업데이트
* @param {string} prodSno - 상품 고유번호
* @param {number} quantity - 새로운 수량
*/
export const updateMockCartItem = (prodSno, quantity) => (dispatch, getState) => {
if (!BUYNOW_CONFIG.isMockMode()) {
return;
}
dlog('[MockCartActions] updateMockCartItem - prodSno:', prodSno, 'quantity:', quantity);
const updatedItem = updateMockCartItemQuantity(prodSno, quantity);
dispatch({
type: MOCK_CART_TYPES.UPDATE_MOCK_CART_ITEM,
payload: {
item: updatedItem,
prodSno,
quantity,
lastAction: {
type: 'update',
data: { prodSno, quantity },
timestamp: Date.now(),
},
},
});
};
/**
* Mock 장바구니 상품 수량 직접 설정
* @param {string} prodSno - 상품 고유번호
* @param {number} quantity - 설정할 수량
*/
export const setMockCartItemQuantity = (prodSno, quantity) => (dispatch, getState) => {
if (!BUYNOW_CONFIG.isMockMode()) {
return;
}
if (quantity <= 0) {
// 수량이 0이면 상품 제거
dispatch(removeFromMockCart(prodSno));
return;
}
dlog('[MockCartActions] setMockCartItemQuantity - prodSno:', prodSno, 'quantity:', quantity);
const updatedItem = updateMockCartItemQuantity(prodSno, quantity);
dispatch({
type: MOCK_CART_TYPES.SET_MOCK_CART_QUANTITY,
payload: {
item: updatedItem,
prodSno,
quantity,
lastAction: {
type: 'set_quantity',
data: { prodSno, quantity },
timestamp: Date.now(),
},
},
});
};
/**
* Mock 장바구니 전체 비우기
*/
export const clearMockCart = () => (dispatch, getState) => {
if (!BUYNOW_CONFIG.isMockMode()) {
return;
}
dlog('[MockCartActions] clearMockCart');
dispatch({
type: MOCK_CART_TYPES.CLEAR_MOCK_CART,
payload: {
lastAction: {
type: 'clear',
timestamp: Date.now(),
},
},
});
};
/**
* Mock 장바구니 데이터 재설정 (빈 장바구니로 복원)
*/
export const resetMockCart = () => (dispatch, getState) => {
if (!BUYNOW_CONFIG.isMockMode()) {
return;
}
dlog('[MockCartActions] resetMockCart - Clearing cart to empty');
// 빈 장바구니로 재설정 (기본 Mock 상품 없음)
dispatch({
type: MOCK_CART_TYPES.INIT_MOCK_CART,
payload: {
items: [], // 빈 배열로 재설정
lastAction: {
type: 'reset',
timestamp: Date.now(),
},
},
});
};
/**
* 선택된 상품들 업데이트
* @param {Array} selectedItems - 선택된 상품들의 prodSno 배열
*/
export const updateSelectedItems = (selectedItems) => (dispatch, getState) => {
if (!BUYNOW_CONFIG.isMockMode()) {
return;
}
dlog('[MockCartActions] updateSelectedItems - selectedItems:', selectedItems);
dispatch({
type: MOCK_CART_TYPES.UPDATE_SELECTED_ITEMS,
payload: {
selectedItems,
lastAction: {
type: 'update_selected',
timestamp: Date.now(),
},
},
});
};