Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
107 changes: 78 additions & 29 deletions src/actions/sponsor-cart-actions.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ import {
createAction,
getRequest,
deleteRequest,
putRequest,
startLoading,
stopLoading
} from "openstack-uicore-foundation/lib/utils/actions";
Expand All @@ -28,6 +29,7 @@ import { ERROR_CODE_404 } from "../utils/constants";
export const REQUEST_SPONSOR_CART = "REQUEST_SPONSOR_CART";
export const RECEIVE_SPONSOR_CART = "RECEIVE_SPONSOR_CART";
export const SPONSOR_CART_FORM_DELETED = "SPONSOR_CART_FORM_DELETED";
export const SPONSOR_CART_FORM_LOCKED = "SPONSOR_CART_FORM_LOCKED";

const customErrorHandler = (err, res) => (dispatch, state) => {
const code = err.status;
Expand Down Expand Up @@ -82,35 +84,82 @@ export const getSponsorCart =
});
};

export const deleteSponsorCartForm = (formId) => async (dispatch, getState) => {
const { currentSummitState, currentSponsorState } = getState();
const { currentSummit } = currentSummitState;
const {
entity: { id: sponsorId }
} = currentSponsorState;
const accessToken = await getAccessTokenSafely();
const params = { access_token: accessToken };

export const deleteSponsorCartForm =
(formId) => async (dispatch, getState) => {
const { currentSummitState, currentSponsorState } = getState();
const { currentSummit } = currentSummitState;
const {
entity: { id: sponsorId }
} = currentSponsorState;
const accessToken = await getAccessTokenSafely();
const params = { access_token: accessToken };
dispatch(startLoading());

dispatch(startLoading());
return deleteRequest(
null,
createAction(SPONSOR_CART_FORM_DELETED)({ formId }),
`${window.PURCHASES_API_URL}/api/v1/summits/${currentSummit.id}/sponsors/${sponsorId}/carts/current/forms/${formId}`,
null,
snackbarErrorHandler
)(params)(dispatch)
.then(() => {
getSponsorCart()(dispatch, getState);
dispatch(
snackbarSuccessHandler({
title: T.translate("general.success"),
html: T.translate("sponsor_forms.form_delete_success")
})
);
})
.finally(() => {
dispatch(stopLoading());
});
};

return deleteRequest(
null,
createAction(SPONSOR_CART_FORM_DELETED)({ formId }),
`${window.PURCHASES_API_URL}/api/v1/summits/${currentSummit.id}/sponsors/${sponsorId}/sponsor-forms/${formId}`,
null,
snackbarErrorHandler
)(params)(dispatch)
.then(() => {
dispatch(
snackbarSuccessHandler({
title: T.translate("general.success"),
html: T.translate("sponsor_forms.form_delete_success")
})
);
})
.finally(() => {
dispatch(stopLoading());
});
};
export const lockSponsorCartForm = (formId) => async (dispatch, getState) => {
const { currentSummitState, currentSponsorState } = getState();
const { currentSummit } = currentSummitState;
const { entity: sponsor } = currentSponsorState;

const accessToken = await getAccessTokenSafely();

const params = {
access_token: accessToken
};

dispatch(startLoading());

putRequest(
null,
createAction(SPONSOR_CART_FORM_LOCKED)({ formId, is_locked: true }),
`${window.PURCHASES_API_URL}/api/v1/summits/${currentSummit.id}/sponsors/${sponsor.id}/carts/current/forms/${formId}/lock`,
{},
snackbarErrorHandler
)(params)(dispatch)
.catch(console.log) // need to catch promise reject
.finally(() => {
dispatch(stopLoading());
});
};

export const unlockSponsorCartForm = (formId) => async (dispatch, getState) => {
const { currentSummitState, currentSponsorState } = getState();
const { currentSummit } = currentSummitState;
const { entity: sponsor } = currentSponsorState;
const accessToken = await getAccessTokenSafely();
const params = { access_token: accessToken };

dispatch(startLoading());

return deleteRequest(
null,
createAction(SPONSOR_CART_FORM_LOCKED)({ formId, is_locked: false }),
`${window.PURCHASES_API_URL}/api/v1/summits/${currentSummit.id}/sponsors/${sponsor.id}/carts/current/forms/${formId}/lock`,
null,
snackbarErrorHandler
)(params)(dispatch)
.catch(console.log) // need to catch promise reject
.finally(() => {
dispatch(stopLoading());
});
};
20 changes: 15 additions & 5 deletions src/pages/sponsors/sponsor-cart-tab/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,9 @@ import LockClosedIcon from "@mui/icons-material/Lock";
import AddIcon from "@mui/icons-material/Add";
import {
deleteSponsorCartForm,
getSponsorCart
getSponsorCart,
lockSponsorCartForm,
unlockSponsorCartForm
} from "../../../actions/sponsor-cart-actions";
import SearchInput from "../../../components/mui/search-input";
import { TotalRow } from "../../../components/mui/table/extra-rows";
Expand All @@ -39,7 +41,9 @@ const SponsorCartTab = ({
sponsor,
summitId,
getSponsorCart,
deleteSponsorCartForm
deleteSponsorCartForm,
lockSponsorCartForm,
unlockSponsorCartForm
}) => {
const [openPopup, setOpenPopup] = useState(null);
const [formEdit, setFormEdit] = useState(null);
Expand All @@ -64,8 +68,12 @@ const SponsorCartTab = ({
deleteSponsorCartForm(itemId);
};

const handleLock = (item) => {
console.log("LOCK : ", item);
const handleLock = (form) => {
if (form.is_locked) {
unlockSponsorCartForm(form.id);
} else {
lockSponsorCartForm(form.id);
}
};

const handlePayCreditCard = () => {
Expand Down Expand Up @@ -227,5 +235,7 @@ const mapStateToProps = ({ sponsorPageCartListState }) => ({

export default connect(mapStateToProps, {
getSponsorCart,
deleteSponsorCartForm
deleteSponsorCartForm,
lockSponsorCartForm,
unlockSponsorCartForm
})(SponsorCartTab);
21 changes: 20 additions & 1 deletion src/reducers/sponsors/sponsor-page-cart-list-reducer.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,8 @@ import { SET_CURRENT_SUMMIT } from "../../actions/summit-actions";
import {
REQUEST_SPONSOR_CART,
RECEIVE_SPONSOR_CART,
SPONSOR_CART_FORM_DELETED
SPONSOR_CART_FORM_DELETED,
SPONSOR_CART_FORM_LOCKED
} from "../../actions/sponsor-cart-actions";

const DEFAULT_STATE = {
Expand Down Expand Up @@ -70,6 +71,24 @@ const sponsorPageCartListReducer = (state = DEFAULT_STATE, action) => {
}
};
}
case SPONSOR_CART_FORM_LOCKED: {
const { formId, is_locked } = payload;

const forms = state.cart.forms.map((form) => {
if (form.id === formId) {
return {...form, is_locked};
}
return form;
});

return {
...state,
cart: {
...state.cart,
forms
}
};
}
default:
return state;
}
Expand Down