[checkoutpanel] pinCode - 핀코드 에러처리 추가 / 핀코드 리듀서 추가

This commit is contained in:
hyunwoo93.cha
2024-05-27 16:12:41 +09:00
parent 9502293d58
commit b67269a442
4 changed files with 80 additions and 25 deletions

View File

@@ -0,0 +1,18 @@
import { types } from '../actions/actionTypes';
const initialState = {
pinCodeData: null,
};
export const pinCodeReducer = (state = initialState, action) => {
switch (action.type) {
case types.GET_MY_INFO_CARD_PINCODE_CHECK:
return {
...state,
pinCodeData: action.payload,
};
default:
return state;
}
};

View File

@@ -1,27 +1,32 @@
import { applyMiddleware, combineReducers, createStore } from "redux"; import {
import thunk from "redux-thunk"; applyMiddleware,
combineReducers,
createStore,
} from 'redux';
import thunk from 'redux-thunk';
import { appDataReducer } from "../reducers/appDataReducer"; import { appDataReducer } from '../reducers/appDataReducer';
import { billingReducer } from "../reducers/billingReducer"; import { billingReducer } from '../reducers/billingReducer';
import { brandReducer } from "../reducers/brandReducer"; import { brandReducer } from '../reducers/brandReducer';
import { cancelReducer } from "../reducers/cancelReducer"; import { cancelReducer } from '../reducers/cancelReducer';
import { cardReducer } from "../reducers/cardReducer"; import { cardReducer } from '../reducers/cardReducer';
import { checkoutReducer } from "../reducers/checkoutReducer"; import { checkoutReducer } from '../reducers/checkoutReducer';
import { commonReducer } from "../reducers/commonReducer"; import { commonReducer } from '../reducers/commonReducer';
import { couponReducer } from "../reducers/couponReducer"; import { couponReducer } from '../reducers/couponReducer';
import { deviceReducer } from "../reducers/deviceReducer"; import { deviceReducer } from '../reducers/deviceReducer';
import { eventReducer } from "../reducers/eventReducer"; import { eventReducer } from '../reducers/eventReducer';
import { homeReducer } from "../reducers/homeReducer"; import { homeReducer } from '../reducers/homeReducer';
import { localSettingsReducer } from "../reducers/localSettingsReducer"; import { localSettingsReducer } from '../reducers/localSettingsReducer';
import { mainReducer } from "../reducers/mainReducer"; import { mainReducer } from '../reducers/mainReducer';
import { myPageReducer } from "../reducers/myPageReducer"; import { myPageReducer } from '../reducers/myPageReducer';
import { onSaleReducer } from "../reducers/onSaleReducer"; import { onSaleReducer } from '../reducers/onSaleReducer';
import { orderReducer } from "../reducers/orderReducer"; import { orderReducer } from '../reducers/orderReducer';
import { panelsReducer } from "../reducers/panelReducer"; import { panelsReducer } from '../reducers/panelReducer';
import { playReducer } from "../reducers/playReducer"; import { pinCodeReducer } from '../reducers/pinCodeReducer';
import { productReducer } from "../reducers/productReducer"; import { playReducer } from '../reducers/playReducer';
import { searchReducer } from "../reducers/searchReducer"; import { productReducer } from '../reducers/productReducer';
import { shippingReducer } from "../reducers/shippingReducer"; import { searchReducer } from '../reducers/searchReducer';
import { shippingReducer } from '../reducers/shippingReducer';
const rootReducer = combineReducers({ const rootReducer = combineReducers({
panels: panelsReducer, panels: panelsReducer,
@@ -45,6 +50,7 @@ const rootReducer = combineReducers({
play: playReducer, play: playReducer,
order: orderReducer, order: orderReducer,
cancel: cancelReducer, cancel: cancelReducer,
pinCode: pinCodeReducer,
}); });
export const store = createStore(rootReducer, applyMiddleware(thunk)); export const store = createStore(rootReducer, applyMiddleware(thunk));

View File

@@ -4,11 +4,16 @@ import React, {
} from 'react'; } from 'react';
import classNames from 'classnames'; import classNames from 'classnames';
import {
useDispatch,
useSelector,
} from 'react-redux';
import SpotlightContainerDecorator import SpotlightContainerDecorator
from '@enact/spotlight/SpotlightContainerDecorator'; from '@enact/spotlight/SpotlightContainerDecorator';
import Spottable from '@enact/spotlight/Spottable'; import Spottable from '@enact/spotlight/Spottable';
import { getMyInfoCardPincodeCheck } from '../../../actions/pinCodeActions';
import TButton from '../../../components/TButton/TButton'; import TButton from '../../../components/TButton/TButton';
import { $L } from '../../../utils/helperMethods'; import { $L } from '../../../utils/helperMethods';
import css from './PinCodeInput.module.less'; import css from './PinCodeInput.module.less';
@@ -18,6 +23,13 @@ const PinCodeContainer = SpotlightContainerDecorator("div");
const SpottableButton = Spottable("div"); const SpottableButton = Spottable("div");
export default function PinCodeInput({ setPlaceOrderPopup }) { export default function PinCodeInput({ setPlaceOrderPopup }) {
const dispatch = useDispatch();
const pinCodeDatas = useSelector((state) => state.pinCode.pinCodeData);
const userNumber = useSelector(
(state) => state.common.appStatus.loginUserData.userNumber
);
const [pin, setPin] = useState(["", "", "", ""]); const [pin, setPin] = useState(["", "", "", ""]);
const handleDigitClick = useCallback( const handleDigitClick = useCallback(
@@ -53,6 +65,15 @@ export default function PinCodeInput({ setPlaceOrderPopup }) {
setPlaceOrderPopup(false); setPlaceOrderPopup(false);
}, [setPlaceOrderPopup]); }, [setPlaceOrderPopup]);
const onClickConfirm = useCallback(() => {
dispatch(
getMyInfoCardPincodeCheck({
mbrNo: userNumber,
pinCd: pin,
})
);
}, [dispatch]);
return ( return (
<PinCodeContainer className={css.pinCodeContainer}> <PinCodeContainer className={css.pinCodeContainer}>
<h1 className={css.pinCodeTitle}>{$L("Enter PIN CODE")}</h1> <h1 className={css.pinCodeTitle}>{$L("Enter PIN CODE")}</h1>
@@ -68,6 +89,7 @@ export default function PinCodeInput({ setPlaceOrderPopup }) {
</div> </div>
))} ))}
</div> </div>
<div className={css.errMsg}>ERROR</div>
<div className={css.pinCodeDigits}> <div className={css.pinCodeDigits}>
{[...Array(10).keys()].map((digit) => ( {[...Array(10).keys()].map((digit) => (
<SpottableButton <SpottableButton
@@ -85,7 +107,7 @@ export default function PinCodeInput({ setPlaceOrderPopup }) {
</div> </div>
<div className={css.buttonContainer}> <div className={css.buttonContainer}>
<TButton onClick={onClickCancel}>{$L("Cancel")}</TButton> <TButton onClick={onClickCancel}>{$L("Cancel")}</TButton>
<TButton>{$L("OK")}</TButton> <TButton onClick={onClickConfirm}>{$L("OK")}</TButton>
</div> </div>
</PinCodeContainer> </PinCodeContainer>
); );

View File

@@ -41,8 +41,17 @@
} }
} }
.errMsg {
width: 1000px;
margin: 27px auto 0;
text-align: center;
color: @PRIMARY_COLOR_RED;
font-size: 30px;
line-height: 1.07;
}
.pinCodeDigits { .pinCodeDigits {
margin: 150px auto 0; margin: 63px auto 0;
display: flex; display: flex;
justify-content: center; justify-content: center;