[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:
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user