feat(webapp): showing up mail popup once saving invoice, receipt and estimate

This commit is contained in:
Ahmed Bouhuolia
2024-01-25 21:56:18 +02:00
parent 760dbc6cfc
commit 63708ae839
29 changed files with 482 additions and 138 deletions

View File

@@ -4,21 +4,16 @@ import { Dialog, DialogSuspense } from '@/components';
import withDialogRedux from '@/components/DialogReduxConnect';
import { compose } from '@/utils';
const EstimateMailDialogContent = React.lazy(
() => import('./EstimateMailDialogContent'),
const EstimateMailDialogBody = React.lazy(
() => import('./EstimateMailDialogBody'),
);
/**
* Invoice mail dialog.
* Estimate mail dialog.
*/
function EstimateMailDialog({
dialogName,
payload: {
estimateId = null,
// Redirect to the estimates list after mail submitting.
redirectToEstimatesList = false,
},
payload: { estimateId = null },
isOpen,
}) {
return (
@@ -31,11 +26,7 @@ function EstimateMailDialog({
style={{ width: 600 }}
>
<DialogSuspense>
<EstimateMailDialogContent
dialogName={dialogName}
estimateId={estimateId}
redirectToEstimatesList={redirectToEstimatesList}
/>
<EstimateMailDialogBody estimateId={estimateId} />
</DialogSuspense>
</Dialog>
);

View File

@@ -0,0 +1,33 @@
// @ts-nocheck
import * as R from 'ramda';
import withDialogActions from '@/containers/Dialog/withDialogActions';
import EstimateMailDialogContent from './EstimateMailDialogContent';
import { DialogsName } from '@/constants/dialogs';
interface EstimateMailDialogBodyProps {
estimateId: number;
}
function EstimateMailDialogBodyRoot({
estimateId,
// #withDialogActions
closeDialog,
}: EstimateMailDialogBodyProps) {
const handleSubmit = () => {
closeDialog(DialogsName.EstimateMail);
};
const handleCancelClick = () => {
closeDialog(DialogsName.EstimateMail);
};
return (
<EstimateMailDialogContent
estimateId={estimateId}
onFormSubmit={handleSubmit}
onCancelClick={handleCancelClick}
/>
);
}
export default R.compose(withDialogActions)(EstimateMailDialogBodyRoot);

View File

@@ -2,21 +2,21 @@ import { EstimateMailDialogBoot } from './EstimateMailDialogBoot';
import { EstimateMailDialogForm } from './EstimateMailDialogForm';
interface EstimateMailDialogContentProps {
dialogName: string;
estimateId: number;
redirectToEstimatesList?: boolean;
onFormSubmit?: () => void;
onCancelClick?: () => void;
}
export default function EstimateMailDialogContent({
dialogName,
estimateId,
redirectToEstimatesList,
onFormSubmit,
onCancelClick,
}: EstimateMailDialogContentProps) {
return (
<EstimateMailDialogBoot
estimateId={estimateId}
redirectToEstimatesList={redirectToEstimatesList}
>
<EstimateMailDialogForm />
<EstimateMailDialogBoot estimateId={estimateId}>
<EstimateMailDialogForm
onFormSubmit={onFormSubmit}
onCancelClick={onCancelClick}
/>
</EstimateMailDialogBoot>
);
}

View File

@@ -2,7 +2,6 @@
import { Formik } from 'formik';
import * as R from 'ramda';
import { Intent } from '@blueprintjs/core';
import { useHistory } from 'react-router-dom';
import { useEstimateMailDialogBoot } from './EstimateMailDialogBoot';
import { DialogsName } from '@/constants/dialogs';
import withDialogActions from '@/containers/Dialog/withDialogActions';
@@ -26,6 +25,9 @@ interface EstimateMailFormValues extends MailNotificationFormValues {
}
function EstimateMailDialogFormRoot({
onFormSubmit,
onCancelClick,
// #withDialogClose
closeDialog,
}) {
@@ -33,8 +35,6 @@ function EstimateMailDialogFormRoot({
const { mailOptions, saleEstimateId, redirectToEstimatesList } =
useEstimateMailDialogBoot();
const history = useHistory();
const initialValues = transformMailFormToInitialValues(
mailOptions,
initialFormValues,
@@ -52,10 +52,7 @@ function EstimateMailDialogFormRoot({
});
closeDialog(DialogsName.EstimateMail);
setSubmitting(false);
if (redirectToEstimatesList) {
history.push('/estimates');
}
onFormSubmit && onFormSubmit();
})
.catch(() => {
setSubmitting(false);
@@ -64,6 +61,7 @@ function EstimateMailDialogFormRoot({
message: 'Something went wrong.',
intent: Intent.DANGER,
});
onCancelClick && onCancelClick();
});
};