Skip to content

Commit

Permalink
jsdocs for voucher actions minor refacto
Browse files Browse the repository at this point in the history
  • Loading branch information
Oksydan committed Sep 17, 2023
1 parent 8d83e02 commit 42f1778
Show file tree
Hide file tree
Showing 5 changed files with 104 additions and 19 deletions.
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
/**
* Submit voucher code from link
* @param event {object} - click event
*/
const codeLinkSubmitHandler = (event) => {
event.preventDefault();

Expand Down
12 changes: 6 additions & 6 deletions _dev/js/theme/core/cart/handler/voucher/deleteVoucherHandler.js
Original file line number Diff line number Diff line change
@@ -1,24 +1,24 @@
import prestashop from 'prestashop';
import useAlertToast from '../../../../components/useAlertToast';
import deleteVoucherFromCartRequest from '../../request/deleteVoucherFromCartRequest';

const { danger } = useAlertToast();

/**
* Delete voucher handler
* @param event {object} - click event
* @returns {Promise<void>}
*/
const deleteVoucherHandler = async (event) => {
event.preventDefault();

const btn = event.currentTarget;
const { dataset } = btn;
const { idDiscount } = dataset;
const url = prestashop.urls.pages.cart;
const payload = {
deleteDiscount: idDiscount,
action: 'update',
token: prestashop.static_token,
ajax: 1,
};

const { getRequest } = deleteVoucherFromCartRequest(url, payload);
const { getRequest } = deleteVoucherFromCartRequest(payload);

try {
const resp = await getRequest();
Expand Down
13 changes: 6 additions & 7 deletions _dev/js/theme/core/cart/handler/voucher/submitVoucherHandler.js
Original file line number Diff line number Diff line change
@@ -1,10 +1,14 @@
import prestashop from 'prestashop';
import addVoucherToCartRequest from '../../request/addVoucherToCartRequest';
import parseToHtml from '../../../../utils/parseToHtml';
import useAlertToast from '../../../../components/useAlertToast';

const { danger } = useAlertToast();

/**
* Submit voucher handler
* @param event {object} - submit event
* @returns {Promise<void>}
*/
const submitVoucherHandler = async (event) => {
event.preventDefault();

Expand All @@ -14,14 +18,10 @@ const submitVoucherHandler = async (event) => {
const voucherName = input?.value || '';

const payload = {
addDiscount: 1,
discount_name: voucherName,
action: 'update',
token: prestashop.static_token,
ajax: 1,
};

const { getRequest } = addVoucherToCartRequest(prestashop.urls.pages.cart, payload);
const { getRequest } = addVoucherToCartRequest(payload);

btn.disabled = true;

Expand All @@ -47,7 +47,6 @@ const submitVoucherHandler = async (event) => {
}
} catch (error) {
danger(error.message);
console.error(error);
}

btn.disabled = false;
Expand Down
48 changes: 45 additions & 3 deletions _dev/js/theme/core/cart/request/addVoucherToCartRequest.js
Original file line number Diff line number Diff line change
@@ -1,11 +1,53 @@
import prestashop from 'prestashop';
import useHttpRequest from '../../../components/http/useHttpRequest';

const addVoucherToCartRequest = (url, payload) => {
const { request } = useHttpRequest(url);
/**
* @typedef ServerResponse
* @property {string|string[]} errors The errors returned by the server
* @property {number} id_customization Always 0
* @property {number} id_product Always 0
* @property {number} id_product_attribute Always 0
* @property {number} quantity Always 0
* @property {boolean} success Always 0
* @property {object} cart cart front object
*/

/**
* Add voucher to cart request
* @param payload {Object} - payload object to send
* @param payload.discount_name {string} - discount code - Required
* @param payload.addDiscount {number} - optional
* @param payload.action {string} - optional
* @param payload.token {string} - optional
* @param payload.ajax {number} - optional
* @example
* const payload = {
* discount_name: 'voucherName', // Required
* };
*
* const { getRequest } = addVoucherToCartRequest(payload);
*
* try {
* const resp = await getRequest();
* } catch (error) {
* console.error(error);
* }
* @returns {{getRequest: (function(): Promise<ServerResponse>)}}
*/
const addVoucherToCartRequest = (payload) => {
const { request } = useHttpRequest(prestashop.urls.pages.cart);

const payloadToSend = {
addDiscount: 1,
action: 'update',
token: prestashop.static_token,
ajax: 1,
...payload,
};

const getRequest = () => new Promise((resolve, reject) => {
request
.query(payload)
.query(payloadToSend)
.post()
.json((resp) => {
resolve(resp);
Expand Down
46 changes: 43 additions & 3 deletions _dev/js/theme/core/cart/request/deleteVoucherFromCartRequest.js
Original file line number Diff line number Diff line change
@@ -1,11 +1,51 @@
import prestashop from 'prestashop';
import useHttpRequest from '../../../components/http/useHttpRequest';

const deleteVoucherFromCartRequest = (url, payload) => {
const { request } = useHttpRequest(url);
/**
* @typedef ServerResponse
* @property {string|string[]} errors The errors returned by the server
* @property {number} id_customization Always 0
* @property {number} id_product Always 0
* @property {number} id_product_attribute Always 0
* @property {number} quantity Always 0
* @property {boolean} success Always 0
* @property {object} cart cart front object
*/

/**
* Add voucher to cart request
* @param payload {Object} - payload object to send
* @param payload.deleteDiscount {number} - discount code id - Required
* @param payload.action {string} - optional
* @param payload.token {string} - optional
* @param payload.ajax {number} - optional
* @example
* const payload = {
* deleteDiscount: 2, // required
* };
*
* const { getRequest } = deleteVoucherFromCartRequest(payload);
*
* try {
* const resp = await getRequest();
* } catch (error) {
* console.error(error);
* }
* @returns {{getRequest: (function(): Promise<ServerResponse>)}}
*/
const deleteVoucherFromCartRequest = (payload) => {
const { request } = useHttpRequest(prestashop.urls.pages.cart);

const payloadToSend = {
action: 'update',
token: prestashop.static_token,
ajax: 1,
...payload,
};

const getRequest = () => new Promise((resolve, reject) => {
request
.query(payload)
.query(payloadToSend)
.post()
.json((resp) => {
resolve(resp);
Expand Down

0 comments on commit 42f1778

Please sign in to comment.