Skip to content

Commit 8ba8c13

Browse files
committed
#1250: Surrounded aliased uncaught mutate asyncs in try catchesand toasted if error
1 parent 9dbdb1a commit 8ba8c13

3 files changed

Lines changed: 40 additions & 12 deletions

File tree

src/frontend/src/pages/FinancePage/CreateReimbursementRequest.tsx

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,21 +9,30 @@ import { routes } from '../../utils/routes';
99
import ReimbursementRequestForm, {
1010
ReimbursementRequestDataSubmission
1111
} from './ReimbursementRequestForm/ReimbursementRequestForm';
12+
import { useToast } from '../../hooks/toasts.hooks';
1213

1314
const CreateReimbursementRequestPage: React.FC = () => {
1415
const { isLoading: createReimbursementRequestIsLoading, mutateAsync: createReimbursementRequest } =
1516
useCreateReimbursementRequest();
1617
const { isLoading: receiptsIsLoading, mutateAsync: uploadReceipts } = useUploadManyReceipts();
18+
const toast = useToast();
1719

1820
if (createReimbursementRequestIsLoading || receiptsIsLoading) return <LoadingIndicator />;
1921

2022
const onSubmit = async (data: ReimbursementRequestDataSubmission): Promise<string> => {
21-
const { reimbursementRequestId } = await createReimbursementRequest(data);
22-
await uploadReceipts({
23-
id: reimbursementRequestId,
24-
files: data.receiptFiles.map((file) => file.file!)
25-
});
26-
return reimbursementRequestId;
23+
try {
24+
const { reimbursementRequestId } = await createReimbursementRequest(data);
25+
await uploadReceipts({
26+
id: reimbursementRequestId,
27+
files: data.receiptFiles.map((file) => file.file!)
28+
});
29+
return reimbursementRequestId;
30+
} catch (e) {
31+
if (e instanceof Error) {
32+
toast.error(e.message);
33+
}
34+
}
35+
throw new Error('Could not create reimbursement.');
2736
};
2837

2938
return (

src/frontend/src/pages/FinancePage/EditReimbursementRequest/EditReimbursementRequest.tsx

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import { useParams } from 'react-router-dom';
1212
import LoadingIndicator from '../../../components/LoadingIndicator';
1313
import ErrorPage from '../../ErrorPage';
1414
import EditReimbursementRequestRenderedDefaultValues from './EditReimbursementRequestRenderedDefaultValues';
15+
import { useToast } from '../../../hooks/toasts.hooks';
1516

1617
const EditReimbursementRequestPage: React.FC = () => {
1718
const id = useParams<{ id: string }>().id;
@@ -20,6 +21,7 @@ const EditReimbursementRequestPage: React.FC = () => {
2021
useEditReimbursementRequest(id);
2122
const { isLoading: uploadReceiptsIsLoading, mutateAsync: uploadReceipts } = useUploadManyReceipts();
2223
const { isLoading: getIsLoading, isError, error, data: reimbursementRequest } = useSingleReimbursementRequest(id);
24+
const toast = useToast();
2325

2426
if (isError) return <ErrorPage error={error} />;
2527

@@ -28,11 +30,19 @@ const EditReimbursementRequestPage: React.FC = () => {
2830

2931
const onSubmit = async (data: ReimbursementRequestDataSubmission): Promise<string> => {
3032
const filesToKeep = data.receiptFiles.filter((file) => file.googleFileId !== '');
31-
await editReimbursementRequest({ ...data, receiptPictures: filesToKeep });
32-
await uploadReceipts({
33-
id: reimbursementRequest.reimbursementRequestId,
34-
files: data.receiptFiles.filter((receipt) => receipt.googleFileId === '').map((file) => file.file!)
35-
});
33+
34+
try {
35+
await editReimbursementRequest({ ...data, receiptPictures: filesToKeep });
36+
await uploadReceipts({
37+
id: reimbursementRequest.reimbursementRequestId,
38+
files: data.receiptFiles.filter((receipt) => receipt.googleFileId === '').map((file) => file.file!)
39+
});
40+
} catch (e) {
41+
if (e instanceof Error) {
42+
toast.error(e.message);
43+
}
44+
}
45+
3646
return reimbursementRequest.reimbursementRequestId;
3747
};
3848

src/frontend/src/pages/FinancePage/ReimbursementRequestDetailPage/SubmitToSaboModal.tsx

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import ErrorPage from '../../ErrorPage';
88
import { datePipe } from '../../../utils/pipes';
99
import DetailDisplay from '../../../components/DetailDisplay';
1010
import { imagePreviewUrl } from '../../../utils/reimbursement-request.utils';
11+
import { useToast } from '../../../hooks/toasts.hooks';
1112

1213
interface SubmitToSaboModalProps {
1314
open: boolean;
@@ -21,6 +22,7 @@ const SubmitToSaboModal = ({ open, setOpen, reimbursementRequest }: SubmitToSabo
2122
const { recipient, dateOfExpense, totalCost, vendor, expenseType, reimbursementProducts, receiptPictures } =
2223
reimbursementRequest;
2324
const { data: userInfo, isLoading, isError, error } = useUserSecureSettings(recipient.userId);
25+
const toast = useToast();
2426

2527
if (!user.isFinance) return <></>;
2628
if (isLoading || !userInfo) return <LoadingIndicator />;
@@ -33,7 +35,14 @@ const SubmitToSaboModal = ({ open, setOpen, reimbursementRequest }: SubmitToSabo
3335
.join(', ');
3436

3537
const handleSubmitToSabo = () => {
36-
submitToSabo();
38+
try {
39+
submitToSabo();
40+
} catch (e) {
41+
if (e instanceof Error) {
42+
toast.error(e.message);
43+
}
44+
}
45+
3746
setOpen(false);
3847
};
3948

0 commit comments

Comments
 (0)