Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 | 4x 4x | import React, { FC, useEffect, useState } from 'react';
const styles = require('./Basket.module.css')
import { Button } from 'ag-ems-ui-library';
import { useCartContext } from '../../contexts';
import { useTranslation } from 'react-i18next';
export const BasketCode: FC<{
classes?: string;
setPreloader?: (flag: boolean) => void;
}> = ({ classes, setPreloader }) => {
const { t } = useTranslation();
const { applyCoupon, removeCoupon, coupons } = useCartContext();
const [code, setCode] = useState('');
const [isApplied, setIsApplied] = useState(false);
const [errorMessage, setErrorMessage] = useState('');
const onTypeCode = e => {
setCode(e.target.value);
}
useEffect(() => {
if (coupons && coupons.length) {
setCode(coupons[0].code);
setIsApplied(true);
} else {
setCode('');
setIsApplied(false);
}
}, [coupons]);
const onApply = evt => {
evt.preventDefault();
setErrorMessage('');
setPreloader && setPreloader(true);
if (isApplied) {
removeCoupon().then(({ errors }) => {
setPreloader && setPreloader(false);
if (errors && errors.length) {
setErrorMessage(errors[0].message);
}
});
} else {
applyCoupon(code).then(({ errors }) => {
setPreloader && setPreloader(false);
if (errors && errors.length) {
setErrorMessage(errors[0].message);
}
});
}
}
return (
<form className={`${styles.BasketCode} ${classes ? classes : ''}`} onSubmit={onApply}>
<div className={styles.BasketCodeField}>
<input
type="text"
value={code}
placeholder={`${t('checkout.enterCode')} (${t('optional')})`}
disabled={isApplied}
onChange={onTypeCode}
/>
{code.trim().length
? <button type="submit">{isApplied ? t('remove') : t('apply')}</button>
: null
}
</div>
{errorMessage && <p className="errorText">{errorMessage}</p>}
</form>
);
} |