diff --git a/frontend/src/pages/Reports/ReportDetailPage.tsx b/frontend/src/pages/Reports/ReportDetailPage.tsx
index d30f0db..2eefbec 100644
--- a/frontend/src/pages/Reports/ReportDetailPage.tsx
+++ b/frontend/src/pages/Reports/ReportDetailPage.tsx
@@ -86,9 +86,11 @@ const ReportDetailPage: React.FC = () => {
};
// Handle action buttons
- const handleDiscard = async () => {
+ const handleDiscard = async (setIsProcessing: (isProcessing: boolean) => void) => {
try {
+ setIsProcessing(true);
await axios.delete(`${API_URL}/api/reports/${reportId}`, await getAuthConfig());
+ setIsProcessing(false);
// Show toast notification
createToast({
@@ -102,6 +104,8 @@ const ReportDetailPage: React.FC = () => {
// Navigate back
history.push('/tabs/home');
} catch (error) {
+ setIsProcessing(false);
+
console.error('Error discarding report:', error);
createToast({
message: t('report.discard.error', {
@@ -114,8 +118,17 @@ const ReportDetailPage: React.FC = () => {
}
};
- const handleNewUpload = () => {
- history.push('/tabs/upload');
+ const handleNewUpload = async (setIsProcessing: (isProcessing: boolean) => void) => {
+ try {
+ setIsProcessing(true);
+ await axios.delete(`${API_URL}/api/reports/${reportId}`, await getAuthConfig());
+ setIsProcessing(false);
+
+ history.push('/tabs/upload');
+ } catch (error) {
+ setIsProcessing(false);
+ console.error('Error deleting report before new upload:', error);
+ }
};
return (
@@ -142,8 +155,7 @@ const ReportDetailPage: React.FC = () => {
diff --git a/frontend/src/pages/Reports/components/ActionButtons.tsx b/frontend/src/pages/Reports/components/ActionButtons.tsx
index 1141097..578fbcb 100644
--- a/frontend/src/pages/Reports/components/ActionButtons.tsx
+++ b/frontend/src/pages/Reports/components/ActionButtons.tsx
@@ -1,14 +1,10 @@
import React, { useState } from 'react';
import { useTranslation } from 'react-i18next';
-import axios from 'axios';
-import { getAuthConfig } from 'common/api/reportService';
import ConfirmationModal from '../../../common/components/Modal/ConfirmationModal';
-const API_URL = import.meta.env.VITE_BASE_URL_API || '';
-
interface ActionButtonsProps {
- onDiscard: () => void;
- onNewUpload: () => void;
+ onDiscard: (setIsProcessing: (isProcessing: boolean) => void) => Promise;
+ onNewUpload: (setIsProcessing: (isProcessing: boolean) => void) => Promise;
reportTitle?: string;
reportId?: string;
}
@@ -16,21 +12,21 @@ interface ActionButtonsProps {
const ActionButtons: React.FC = ({
onDiscard,
onNewUpload,
- reportTitle = '',
- reportId,
+ reportTitle,
}) => {
const { t } = useTranslation();
const [showConfirmDiscard, setShowConfirmDiscard] = useState(false);
const [showConfirmNewUpload, setShowConfirmNewUpload] = useState(false);
- const [isDeleting, setIsDeleting] = useState(false);
+ const [isProcessing, setIsProcessing] = useState(false);
const handleDiscardClick = () => {
setShowConfirmDiscard(true);
};
- const handleConfirmDiscard = () => {
+ const handleConfirmDiscard = async () => {
setShowConfirmDiscard(false);
- onDiscard();
+
+ await onDiscard(setIsProcessing);
};
const handleCancelDiscard = () => {
@@ -44,22 +40,7 @@ const ActionButtons: React.FC = ({
const handleConfirmNewUpload = async () => {
setShowConfirmNewUpload(false);
- // If we have a reportId, delete the current report before going to upload screen
- if (reportId) {
- try {
- setIsDeleting(true);
- await axios.delete(`${API_URL}/api/reports/${reportId}`, await getAuthConfig());
- } catch (error) {
- console.error('Error deleting report before new upload:', error);
- } finally {
- setIsDeleting(false);
- // Even if delete failed, still go to upload screen
- onNewUpload();
- }
- } else {
- // If no reportId, just navigate to upload
- onNewUpload();
- }
+ await onNewUpload(setIsProcessing);
};
const handleCancelNewUpload = () => {
@@ -72,14 +53,14 @@ const ActionButtons: React.FC = ({