import React, { useEffect, useState } from 'react'; import PropTypes from 'prop-types'; import useForm from '../../../common/hooks/useForm'; import { ListGroupItem, Modal, ModalBody, ModalFooter, ModalHeader, Row, Form, Button, Col, ListGroup, Label } from 'reactstrap'; import { Checkbox, Input } from '../../../common/FormControls'; import { cancelPlan, cancelPlanHubspot } from '../../../../api/plans/userPlans'; import { planRoutes } from './UserPlans'; const formParams = { rs1: 1, rs2: 2, rs3: 3, rs4: 4, rs5: 5, rs6: 'Other' }; const initForm = { [formParams.rs1]: false, [formParams.rs2]: false, [formParams.rs3]: false, [formParams.rs4]: false, [formParams.rs5]: false, [formParams.rs6]: false, Other: false, content: '', email: '', subject: 'Cancellation', errors: { email: null } }; function CancellationFeedback({ t, actions, isOpen = false, toggle, user }) { const { form, handleChange, handleValidation, validateSubmit, errors } = useForm(initForm); const [cancelLoading, setCancelLoading] = useState(false); const [reasonError, setReasonError] = useState(''); useEffect(() => { handleChange('email', user.email); }, [user.email]); useEffect(() => { if (Object.values(formParams).some((v) => form[v])) { setReasonError(''); } }, [...Object.values(form)]); function cancelSubscription() { const obj = validateSubmit(); if (!obj) { return actions.addAlert({ type: 'error', transKey: 'requiredInfo' }); } else if (!Object.values(formParams).some((v) => obj[v])) { setReasonError(t('plans.currentPlan.cancelModal.reasonSelect')); return; } setCancelLoading(true); cancelPlan().then((res) => { if (res.error) { res.data ? actions.addAlert(res.data) : actions.addAlert({ type: 'error', transKey: 'somethingWrong' }); setCancelLoading(false); return; } cancelPlanHubspot({ ...obj }); actions.addAlert({ type: 'notice', transKey: 'cancelledSubscription' }); // refresh page on success and move to active plan details setTimeout(() => { window.location.pathname = `/app/plans/${planRoutes.current}`; }, 1000); }); } return (
{t('plans.currentPlan.cancelModal.line1', { firstName: user.firstName })}
{t('plans.currentPlan.cancelModal.line2')}