[251104] fix: CheckOutPanel전환시 Promise처리

🕐 커밋 시간: 2025. 11. 04. 13:15:26

📊 변경 통계:
  • 총 파일: 2개
  • 추가: +110줄
  • 삭제: -59줄

📝 수정된 파일:
  ~ com.twin.app.shoptime/src/reducers/panelReducer.js
  ~ com.twin.app.shoptime/src/views/DetailPanel/components/BuyOption.jsx

🔧 주요 변경 내용:
  • 핵심 비즈니스 로직 개선
  • UI 컴포넌트 아키텍처 개선
  • 중간 규모 기능 개선
  • 코드 정리 및 최적화
This commit is contained in:
2025-11-04 13:15:27 +09:00
parent 80230bf88a
commit 4e945980cb
2 changed files with 110 additions and 59 deletions

View File

@@ -12,6 +12,12 @@ const forceTopPanels = [panel_names.ERROR_PANEL, panel_names.INTRO_PANEL, panel_
export const panelsReducer = (state = initialState, action) => {
switch (action.type) {
case types.PUSH_PANEL: {
console.log('[panelReducer] 🔵 PUSH_PANEL START', {
newPanelName: action.payload.name,
currentPanels: state.panels.map(p => p.name),
duplicatable: action.duplicatable,
});
const panelInfo = action.payload.panelInfo || {};
const forceTopPanelsInfo = [];
const newState = [];
@@ -52,6 +58,12 @@ export const panelsReducer = (state = initialState, action) => {
lastAction = 'previewPush';
}
}
console.log('[panelReducer] 🔵 PUSH_PANEL END', {
resultPanels: newState.map(p => p.name),
lastAction,
});
return {
...state,
panels: newState,
@@ -60,7 +72,14 @@ export const panelsReducer = (state = initialState, action) => {
}
case types.POP_PANEL: {
console.log('[panelReducer] 🔴 POP_PANEL START', {
targetPanel: action.payload || 'last_panel',
currentPanels: state.panels.map(p => p.name),
});
let lastAction = 'pop';
let resultPanels;
if (action.payload) {
if (
state.lastPanelAction.indexOf('preview') === 0 &&
@@ -69,21 +88,24 @@ export const panelsReducer = (state = initialState, action) => {
) {
lastAction = 'previewPop';
}
return {
...state,
panels: state.panels.filter((panel) => panel.name !== action.payload),
lastPanelAction: lastAction,
};
resultPanels = state.panels.filter((panel) => panel.name !== action.payload);
} else {
if (state.lastPanelAction.indexOf('preview') === 0) {
lastAction = 'previewPop';
}
return {
...state,
panels: state.panels.slice(0, state.panels.length - 1),
lastPanelAction: lastAction,
};
resultPanels = state.panels.slice(0, state.panels.length - 1);
}
console.log('[panelReducer] 🔴 POP_PANEL END', {
resultPanels: resultPanels.map(p => p.name),
lastAction,
});
return {
...state,
panels: resultPanels,
lastPanelAction: lastAction,
};
}
case types.UPDATE_PANEL: {
let lastIndex = -1;
@@ -120,6 +142,11 @@ export const panelsReducer = (state = initialState, action) => {
};
}
case types.RESET_PANELS: {
console.log('[panelReducer] 🟢 RESET_PANELS START', {
currentPanels: state.panels.map(p => p.name),
payloadProvided: !!action.payload,
});
const updatedPanels = action.payload
? action.payload.map((panel) => ({
...panel,
@@ -127,6 +154,10 @@ export const panelsReducer = (state = initialState, action) => {
}))
: [];
console.log('[panelReducer] 🟢 RESET_PANELS END', {
resultPanels: updatedPanels.map(p => p.name),
});
return {
...state,
panels: updatedPanels,