[250930] feat: cart관련 redux추가 , BuyOption 포커스 수정
This commit is contained in:
193
com.twin.app.shoptime/src/actions/cartActions.js
Normal file
193
com.twin.app.shoptime/src/actions/cartActions.js
Normal file
@@ -0,0 +1,193 @@
|
||||
import { URLS } from "../api/apiConfig";
|
||||
import { TAxios } from "../api/TAxios";
|
||||
import { types } from "./actionTypes";
|
||||
|
||||
/**
|
||||
* 회원 장바구니 정보 조회
|
||||
* @param {Object} props - { mbrNo: 회원번호 }
|
||||
*/
|
||||
export const getMyInfoCartSearch = (props) => (dispatch, getState) => {
|
||||
const { mbrNo } = props;
|
||||
|
||||
const onSuccess = (response) => {
|
||||
console.log("getMyInfoCartSearch onSuccess: ", response.data);
|
||||
|
||||
dispatch({
|
||||
type: types.GET_MY_INFO_CART_SEARCH,
|
||||
payload: response.data.data,
|
||||
});
|
||||
};
|
||||
|
||||
const onFail = (error) => {
|
||||
console.error("getMyInfoCartSearch OnFail: ", error);
|
||||
|
||||
// 실패 시에도 빈 데이터로 초기화
|
||||
dispatch({
|
||||
type: types.GET_MY_INFO_CART_SEARCH,
|
||||
payload: { cartList: [] },
|
||||
});
|
||||
};
|
||||
|
||||
// API URL이 정의되어 있지 않은 경우 임시로 빈 데이터 반환
|
||||
if (!URLS.GET_MY_INFO_CART_SEARCH) {
|
||||
console.warn("GET_MY_INFO_CART_SEARCH URL이 정의되지 않았습니다.");
|
||||
dispatch({
|
||||
type: types.GET_MY_INFO_CART_SEARCH,
|
||||
payload: { cartList: [] },
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
TAxios(
|
||||
dispatch,
|
||||
getState,
|
||||
"get",
|
||||
URLS.GET_MY_INFO_CART_SEARCH,
|
||||
{ mbrNo },
|
||||
{},
|
||||
onSuccess,
|
||||
onFail
|
||||
);
|
||||
};
|
||||
|
||||
/**
|
||||
* 장바구니에 상품 추가
|
||||
* @param {Object} props - 장바구니 상품 정보
|
||||
*/
|
||||
export const addToCart = (props) => (dispatch, getState) => {
|
||||
const { mbrNo, patnrId, prdtId, prodOptCdCval, prodQty } = props;
|
||||
|
||||
const onSuccess = (response) => {
|
||||
console.log("addToCart onSuccess: ", response.data);
|
||||
|
||||
dispatch({
|
||||
type: types.ADD_TO_CART,
|
||||
payload: response.data.data,
|
||||
});
|
||||
|
||||
// 장바구니 목록 재조회
|
||||
dispatch(getMyInfoCartSearch({ mbrNo }));
|
||||
};
|
||||
|
||||
const onFail = (error) => {
|
||||
console.error("addToCart OnFail: ", error);
|
||||
};
|
||||
|
||||
// API URL이 정의되어 있지 않은 경우 로컬 상태만 업데이트
|
||||
if (!URLS.ADD_TO_CART) {
|
||||
console.warn("ADD_TO_CART URL이 정의되지 않았습니다.");
|
||||
dispatch({
|
||||
type: types.ADD_TO_CART,
|
||||
payload: { patnrId, prdtId, prodOptCdCval, prodQty },
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
TAxios(
|
||||
dispatch,
|
||||
getState,
|
||||
"post",
|
||||
URLS.ADD_TO_CART,
|
||||
{},
|
||||
{ mbrNo, patnrId, prdtId, prodOptCdCval, prodQty },
|
||||
onSuccess,
|
||||
onFail
|
||||
);
|
||||
};
|
||||
|
||||
/**
|
||||
* 장바구니에서 상품 제거
|
||||
* @param {Object} props - { mbrNo, cartSno }
|
||||
*/
|
||||
export const removeFromCart = (props) => (dispatch, getState) => {
|
||||
const { mbrNo, cartSno } = props;
|
||||
|
||||
const onSuccess = (response) => {
|
||||
console.log("removeFromCart onSuccess: ", response.data);
|
||||
|
||||
dispatch({
|
||||
type: types.REMOVE_FROM_CART,
|
||||
payload: { cartSno },
|
||||
});
|
||||
|
||||
// 장바구니 목록 재조회
|
||||
dispatch(getMyInfoCartSearch({ mbrNo }));
|
||||
};
|
||||
|
||||
const onFail = (error) => {
|
||||
console.error("removeFromCart OnFail: ", error);
|
||||
};
|
||||
|
||||
if (!URLS.REMOVE_FROM_CART) {
|
||||
console.warn("REMOVE_FROM_CART URL이 정의되지 않았습니다.");
|
||||
dispatch({
|
||||
type: types.REMOVE_FROM_CART,
|
||||
payload: { cartSno },
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
TAxios(
|
||||
dispatch,
|
||||
getState,
|
||||
"delete",
|
||||
URLS.REMOVE_FROM_CART,
|
||||
{ mbrNo, cartSno },
|
||||
{},
|
||||
onSuccess,
|
||||
onFail
|
||||
);
|
||||
};
|
||||
|
||||
/**
|
||||
* 장바구니 상품 수량 업데이트
|
||||
* @param {Object} props - { mbrNo, cartSno, prodQty }
|
||||
*/
|
||||
export const updateCartItem = (props) => (dispatch, getState) => {
|
||||
const { mbrNo, cartSno, prodQty } = props;
|
||||
|
||||
const onSuccess = (response) => {
|
||||
console.log("updateCartItem onSuccess: ", response.data);
|
||||
|
||||
dispatch({
|
||||
type: types.UPDATE_CART_ITEM,
|
||||
payload: { cartSno, prodQty },
|
||||
});
|
||||
|
||||
// 장바구니 목록 재조회
|
||||
dispatch(getMyInfoCartSearch({ mbrNo }));
|
||||
};
|
||||
|
||||
const onFail = (error) => {
|
||||
console.error("updateCartItem OnFail: ", error);
|
||||
};
|
||||
|
||||
if (!URLS.UPDATE_CART_ITEM) {
|
||||
console.warn("UPDATE_CART_ITEM URL이 정의되지 않았습니다.");
|
||||
dispatch({
|
||||
type: types.UPDATE_CART_ITEM,
|
||||
payload: { cartSno, prodQty },
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
TAxios(
|
||||
dispatch,
|
||||
getState,
|
||||
"put",
|
||||
URLS.UPDATE_CART_ITEM,
|
||||
{},
|
||||
{ mbrNo, cartSno, prodQty },
|
||||
onSuccess,
|
||||
onFail
|
||||
);
|
||||
};
|
||||
|
||||
/**
|
||||
* 장바구니 전체 비우기
|
||||
*/
|
||||
export const clearCart = () => (dispatch) => {
|
||||
dispatch({
|
||||
type: types.CLEAR_CART,
|
||||
});
|
||||
};
|
||||
Reference in New Issue
Block a user