Skip to content

Commit 7d5bef1

Browse files
committed
Refactor upload handling to improve user experience and streamline modal behavior
1 parent ce01296 commit 7d5bef1

File tree

3 files changed

+36
-36
lines changed

3 files changed

+36
-36
lines changed

frontend/src/common/components/Upload/UploadModal.tsx

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -53,27 +53,26 @@ const UploadModal = ({ isOpen, onClose, onUploadComplete }: UploadModalProps): J
5353
} = useFileUpload({
5454
// Override onUploadComplete to store the result and not call the parent immediately
5555
// eslint-disable-next-line @typescript-eslint/no-explicit-any
56-
onUploadComplete: async (result: any) => {
56+
onUploadComplete: (result: any) => {
5757
setUploadResult(result);
5858

59-
// sleep for two seconds
60-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
61-
await new Promise((resolve: any) => setTimeout(resolve, 2000));
59+
// Automatically redirect to processing screen after 2 seconds
60+
setTimeout(() => {
61+
reset();
6262

63-
reset();
64-
if (onUploadComplete) {
65-
onUploadComplete(result);
66-
}
63+
if (onUploadComplete) {
64+
onUploadComplete(result);
65+
}
6766

68-
// Automatically redirect to processing screen
69-
// Navigate to the processing tab with reportId in state
70-
if (file) {
71-
history.push('/tabs/processing', {
72-
reportId: result.id,
73-
});
74-
} else {
75-
history.push('/tabs/processing');
76-
}
67+
// Navigate to the processing tab with reportId in state
68+
if (file) {
69+
history.push('/tabs/processing', {
70+
reportId: result.id,
71+
});
72+
} else {
73+
history.push('/tabs/processing');
74+
}
75+
}, 2000);
7776
},
7877
});
7978

@@ -117,6 +116,7 @@ const UploadModal = ({ isOpen, onClose, onUploadComplete }: UploadModalProps): J
117116
// call onUploadComplete now before closing the modal
118117
if (status === UploadStatus.SUCCESS && uploadResult && onUploadComplete) {
119118
onUploadComplete(uploadResult);
119+
return;
120120
}
121121

122122
// Reset state

frontend/src/common/hooks/useFileUpload.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ export enum UploadStatus {
2020
}
2121

2222
interface UseFileUploadOptions {
23-
onUploadComplete?: (result: MedicalReport) => Promise<void>;
23+
onUploadComplete?: (result: MedicalReport) => void;
2424
}
2525

2626
interface UseFileUploadResult {
@@ -183,7 +183,7 @@ export const useFileUpload = ({
183183
setStatus(UploadStatus.SUCCESS);
184184

185185
if (onUploadComplete) {
186-
await onUploadComplete(result);
186+
onUploadComplete(result);
187187
}
188188
} catch (error) {
189189
handleUploadError(error as Error, signal);

frontend/src/pages/Upload/UploadPage.tsx

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
import { IonContent, IonHeader, IonPage, IonTitle, IonToolbar } from '@ionic/react';
1+
import { IonContent, IonHeader, IonPage, IonTitle, IonToolbar, IonButton } from '@ionic/react';
22
import { useTranslation } from 'react-i18next';
3-
import { useEffect, useState } from 'react';
4-
import { useHistory, useLocation } from 'react-router-dom';
3+
import { useState } from 'react';
4+
import { useHistory } from 'react-router-dom';
55
import UploadModal from 'common/components/Upload/UploadModal';
66

77
/**
@@ -12,24 +12,15 @@ const UploadPage = (): JSX.Element => {
1212
const { t } = useTranslation();
1313
const [isModalOpen, setIsModalOpen] = useState(false);
1414
const history = useHistory();
15-
const location = useLocation();
1615

17-
const handleUploadComplete = () => setIsModalOpen(false);
18-
19-
const handleCloseComplete = () => {
16+
const handleUploadComplete = () => {
17+
// Close the modal
2018
setIsModalOpen(false);
19+
20+
// Navigate to home page to see the newly uploaded report
2121
history.push('/tabs/home');
2222
};
2323

24-
useEffect(() => {
25-
setIsModalOpen(true);
26-
27-
// Cleanup function to close the modal when the component unmounts
28-
return () => {
29-
setIsModalOpen(false);
30-
};
31-
}, [location.pathname]);
32-
3324
return (
3425
<IonPage>
3526
<IonHeader>
@@ -38,9 +29,18 @@ const UploadPage = (): JSX.Element => {
3829
</IonToolbar>
3930
</IonHeader>
4031
<IonContent>
32+
<div className="ion-padding">
33+
<h1>{t('pages.upload.subtitle')}</h1>
34+
<p>{t('pages.upload.description')}</p>
35+
36+
<IonButton expand="block" className="ion-margin-top" onClick={() => setIsModalOpen(true)}>
37+
{t('upload.selectFile')}
38+
</IonButton>
39+
</div>
40+
4141
<UploadModal
4242
isOpen={isModalOpen}
43-
onClose={handleCloseComplete}
43+
onClose={() => setIsModalOpen(false)}
4444
onUploadComplete={handleUploadComplete}
4545
/>
4646
</IonContent>

0 commit comments

Comments
 (0)