diff --git a/frontend/src/common/components/Router/TabNavigation.tsx b/frontend/src/common/components/Router/TabNavigation.tsx
index 62f44f1..ab86017 100644
--- a/frontend/src/common/components/Router/TabNavigation.tsx
+++ b/frontend/src/common/components/Router/TabNavigation.tsx
@@ -47,7 +47,7 @@ const TabNavigation = (): JSX.Element => {
const [isUploadModalOpen, setIsUploadModalOpen] = useState(false);
const history = useHistory();
const location = useLocation();
- const { t } = useTranslation();
+ const { t } = useTranslation(['common']);
// Check if the current path starts with the tab path
const isTabActive = (tabPath: string) => {
@@ -120,7 +120,7 @@ const TabNavigation = (): JSX.Element => {
className="ls-tab-navigation__bar-button-icon"
src={homeIcon}
active={isTabActive('/tabs/home')}
- alt={t('navigation.home', { ns: 'common', defaultValue: 'Home' })}
+ alt={t('navigation.home')}
width={24}
height={24}
/>
@@ -134,7 +134,7 @@ const TabNavigation = (): JSX.Element => {
className="ls-tab-navigation__bar-button-icon"
src={reportsIcon}
active={isTabActive('/tabs/reports')}
- alt={t('navigation.reports', { ns: 'common', defaultValue: 'Reports' })}
+ alt={t('navigation.reports')}
width={24}
height={24}
/>
@@ -148,7 +148,7 @@ const TabNavigation = (): JSX.Element => {
@@ -159,7 +159,7 @@ const TabNavigation = (): JSX.Element => {
className="ls-tab-navigation__bar-button-icon"
src={chatIcon}
active={isTabActive('/tabs/chat')}
- alt={t('navigation.chat', { ns: 'common', defaultValue: 'Chat' })}
+ alt={t('navigation.chat')}
width={24}
height={24}
/>
@@ -173,7 +173,7 @@ const TabNavigation = (): JSX.Element => {
className="ls-tab-navigation__bar-button-icon"
src={profileIcon}
active={isTabActive('/tabs/account')}
- alt={t('navigation.account', { ns: 'common', defaultValue: 'Account' })}
+ alt={t('navigation.account')}
width={24}
height={24}
/>
diff --git a/frontend/src/common/hooks/useReports.ts b/frontend/src/common/hooks/useReports.ts
index 2f08799..b2ed7aa 100644
--- a/frontend/src/common/hooks/useReports.ts
+++ b/frontend/src/common/hooks/useReports.ts
@@ -8,12 +8,13 @@ import {
import { MedicalReport } from '../models/medicalReport';
import { QueryKey } from 'common/utils/constants';
+export const LATEST_REPORTS_LIMIT = 3;
/**
* Hook to fetch the latest reports.
* @param limit - Maximum number of reports to fetch
* @returns Query result with the latest reports
*/
-export const useGetLatestReports = (limit = 3) => {
+export const useGetLatestReports = (limit = LATEST_REPORTS_LIMIT) => {
return useQuery({
queryKey: [QueryKey.LatestReports, limit],
queryFn: () => fetchLatestReports(limit),
@@ -53,12 +54,15 @@ export const useMarkReportAsRead = () => {
});
// Update the latest reports cache
- queryClient.setQueryData([QueryKey.LatestReports], (oldReports) => {
- if (!oldReports) return undefined;
- return oldReports.map((report) =>
- report.id === updatedReport.id ? updatedReport : report,
- );
- });
+ queryClient.setQueryData(
+ [QueryKey.LatestReports, LATEST_REPORTS_LIMIT],
+ (oldReports) => {
+ if (!oldReports) return undefined;
+ return oldReports.map((report) =>
+ report.id === updatedReport.id ? updatedReport : report,
+ );
+ },
+ );
},
});
};
@@ -83,12 +87,15 @@ export const useToggleReportBookmark = () => {
});
// Update the latest reports cache
- queryClient.setQueryData([QueryKey.LatestReports], (oldReports) => {
- if (!oldReports) return undefined;
- return oldReports.map((report) =>
- report.id === updatedReport.id ? updatedReport : report,
- );
- });
+ queryClient.setQueryData(
+ [QueryKey.LatestReports, LATEST_REPORTS_LIMIT],
+ (oldReports) => {
+ if (!oldReports) return undefined;
+ return oldReports.map((report) =>
+ report.id === updatedReport.id ? updatedReport : report,
+ );
+ },
+ );
// Update the bookmark status in the report detail page
queryClient.setQueryData(
diff --git a/frontend/src/common/utils/i18n/resources/en/common.json b/frontend/src/common/utils/i18n/resources/en/common.json
index b8faad3..79c3009 100644
--- a/frontend/src/common/utils/i18n/resources/en/common.json
+++ b/frontend/src/common/utils/i18n/resources/en/common.json
@@ -33,7 +33,9 @@
"menu": "Menu",
"signout": "Sign Out",
"users": "Users",
- "chat": "AI Assistant"
+ "chat": "AI Assistant",
+ "reports": "Reports",
+ "upload": "Upload"
},
"reports": {
"uploadDate": "Upload Date"
@@ -91,5 +93,8 @@
"upload": {
"title": "Upload Report"
}
+ },
+ "actions": {
+ "bookmark": "Bookmark"
}
}
diff --git a/frontend/src/common/utils/i18n/resources/en/reportDetail.json b/frontend/src/common/utils/i18n/resources/en/reportDetail.json
index 158aacf..2aa84e1 100644
--- a/frontend/src/common/utils/i18n/resources/en/reportDetail.json
+++ b/frontend/src/common/utils/i18n/resources/en/reportDetail.json
@@ -85,6 +85,14 @@
"discard": "Discard",
"new-upload": "New Upload"
},
+ "discard": {
+ "title": "Discard report?",
+ "message": "{itemName} will be discarded and not be saved to your reports archive. Are you sure?"
+ },
+ "new-upload": {
+ "title": "Upload new report?",
+ "message": "You've chosen to upload a new report. This will replace your current one. Do you still want to proceed?"
+ },
"tabs": {
"ai-insights": "AI Insights",
"original-report": "Original Report"
diff --git a/frontend/src/common/utils/i18n/resources/fr/common.json b/frontend/src/common/utils/i18n/resources/fr/common.json
index f59e009..c41da8e 100644
--- a/frontend/src/common/utils/i18n/resources/fr/common.json
+++ b/frontend/src/common/utils/i18n/resources/fr/common.json
@@ -23,7 +23,9 @@
"menu": "Menu",
"signout": "Déconnecter",
"users": "Utilisateurs",
- "chat": "Assistant IA"
+ "chat": "Assistant IA",
+ "reports": "Rapports",
+ "upload": "Télécharger"
},
"reports": {
"uploadDate": "Date de téléchargement"
diff --git a/frontend/src/common/utils/i18n/resources/fr/reportDetail.json b/frontend/src/common/utils/i18n/resources/fr/reportDetail.json
index d94fc44..fad8a9c 100644
--- a/frontend/src/common/utils/i18n/resources/fr/reportDetail.json
+++ b/frontend/src/common/utils/i18n/resources/fr/reportDetail.json
@@ -27,6 +27,14 @@
"discard": "Annuler",
"new-upload": "Nouveau téléchargement"
},
+ "discard": {
+ "title": "Supprimer le rapport?",
+ "message": "{itemName} sera supprimé et ne sera pas enregistré dans votre archive de rapports. Êtes-vous sûr?"
+ },
+ "new-upload": {
+ "title": "Télécharger un nouveau rapport?",
+ "message": "Vous avez choisi de télécharger un nouveau rapport. Cela remplacera votre rapport actuel. Voulez-vous toujours continuer?"
+ },
"tabs": {
"ai-insights": "Analyses IA",
"original-report": "Rapport original"
diff --git a/frontend/src/pages/Home/HomePage.tsx b/frontend/src/pages/Home/HomePage.tsx
index 1c6a163..b3d32f5 100644
--- a/frontend/src/pages/Home/HomePage.tsx
+++ b/frontend/src/pages/Home/HomePage.tsx
@@ -98,7 +98,7 @@ const HomePage: React.FC = () => {
report={report}
onClick={() => handleReportClick(report.id)}
onToggleBookmark={() =>
- toggleBookmark.mutate({ reportId: report.id, isBookmarked: report.bookmarked })
+ toggleBookmark.mutate({ reportId: report.id, isBookmarked: !report.bookmarked })
}
showBookmarkButton={true}
/>
diff --git a/frontend/src/pages/Home/components/ReportItem/ReportItem.tsx b/frontend/src/pages/Home/components/ReportItem/ReportItem.tsx
index def5103..98c2dad 100644
--- a/frontend/src/pages/Home/components/ReportItem/ReportItem.tsx
+++ b/frontend/src/pages/Home/components/ReportItem/ReportItem.tsx
@@ -26,7 +26,7 @@ const ReportItem: React.FC = ({
onToggleBookmark,
showBookmarkButton = false,
}) => {
- const { t } = useTranslation(['common', 'report']);
+ const { t } = useTranslation(['common']);
const { title, category, createdAt, status, bookmarked } = report;
// Treat category as string
diff --git a/frontend/src/pages/Reports/ReportsListPage.tsx b/frontend/src/pages/Reports/ReportsListPage.tsx
index 2a6bc39..2ef8547 100644
--- a/frontend/src/pages/Reports/ReportsListPage.tsx
+++ b/frontend/src/pages/Reports/ReportsListPage.tsx
@@ -227,7 +227,7 @@ const ReportsListPage: React.FC = () => {
report={report}
onClick={() => handleReportClick(report.id)}
onToggleBookmark={() =>
- toggleBookmark.mutate({ reportId: report.id, isBookmarked: report.bookmarked })
+ toggleBookmark.mutate({ reportId: report.id, isBookmarked: !report.bookmarked })
}
showBookmarkButton
/>
diff --git a/frontend/src/pages/Reports/components/ActionButtons.tsx b/frontend/src/pages/Reports/components/ActionButtons.tsx
index 5c7d482..5da0e97 100644
--- a/frontend/src/pages/Reports/components/ActionButtons.tsx
+++ b/frontend/src/pages/Reports/components/ActionButtons.tsx
@@ -10,7 +10,7 @@ interface ActionButtonsProps {
}
const ActionButtons: React.FC = ({ onDiscard, onNewUpload, reportTitle }) => {
- const { t } = useTranslation();
+ const { t } = useTranslation(['reportDetail', 'common']);
const [showConfirmDiscard, setShowConfirmDiscard] = useState(false);
const [showConfirmNewUpload, setShowConfirmNewUpload] = useState(false);
const [isProcessing, setIsProcessing] = useState(false);