feat(webapp): add ability to redirect to list to mail dialogs

This commit is contained in:
Ahmed Bouhuolia
2024-01-24 20:03:04 +02:00
parent c8e7a2c7d9
commit 9d4e7cec9e
16 changed files with 112 additions and 19 deletions

View File

@@ -13,7 +13,12 @@ const EstimateMailDialogContent = React.lazy(
*/
function EstimateMailDialog({
dialogName,
payload: { estimateId = null },
payload: {
estimateId = null,
// Redirect to the estimates list after mail submitting.
redirectToEstimatesList = false,
},
isOpen,
}) {
return (
@@ -29,6 +34,7 @@ function EstimateMailDialog({
<EstimateMailDialogContent
dialogName={dialogName}
estimateId={estimateId}
redirectToEstimatesList={redirectToEstimatesList}
/>
</DialogSuspense>
</Dialog>

View File

@@ -6,12 +6,14 @@ import { DialogContent } from '@/components';
interface EstimateMailDialogBootValues {
estimateId: number;
mailOptions: any;
redirectToEstimatesList: boolean;
}
const EstimateMailDialagBoot = createContext<EstimateMailDialogBootValues>();
interface EstimateMailDialogBootProps {
estimateId: number;
redirectToEstimatesList?: boolean;
children: React.ReactNode;
}
@@ -20,6 +22,7 @@ interface EstimateMailDialogBootProps {
*/
function EstimateMailDialogBoot({
estimateId,
redirectToEstimatesList,
...props
}: EstimateMailDialogBootProps) {
const { data: mailOptions, isLoading: isMailOptionsLoading } =
@@ -29,6 +32,7 @@ function EstimateMailDialogBoot({
saleEstimateId: estimateId,
mailOptions,
isMailOptionsLoading,
redirectToEstimatesList,
};
return (

View File

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

View File

@@ -1,6 +1,8 @@
// @ts-nocheck
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';
@@ -12,7 +14,6 @@ import {
transformMailFormToInitialValues,
transformMailFormToRequest,
} from '@/containers/SendMailNotification/utils';
import { Intent } from '@blueprintjs/core';
import { AppToaster } from '@/components';
const initialFormValues = {
@@ -29,7 +30,10 @@ function EstimateMailDialogFormRoot({
closeDialog,
}) {
const { mutateAsync: sendEstimateMail } = useSendSaleEstimateMail();
const { mailOptions, saleEstimateId } = useEstimateMailDialogBoot();
const { mailOptions, saleEstimateId, redirectToEstimatesList } =
useEstimateMailDialogBoot();
const history = useHistory();
const initialValues = transformMailFormToInitialValues(
mailOptions,
@@ -48,8 +52,12 @@ function EstimateMailDialogFormRoot({
});
closeDialog(DialogsName.EstimateMail);
setSubmitting(false);
if (redirectToEstimatesList) {
history.push('/estimates');
}
})
.catch((error) => {
.catch(() => {
setSubmitting(false);
closeDialog(DialogsName.EstimateMail);
AppToaster.show({