This commit is contained in:
2026-03-29 20:06:32 +02:00
parent 1cf472c8ea
commit b824720758
+18 -18
View File
@@ -1,3 +1,4 @@
// src/components/Footer/Footer.jsx
import React, { useEffect, useState } from 'react'; import React, { useEffect, useState } from 'react';
import { fetchDatabaseVersion, triggerFullImport } from '../../services/api'; import { fetchDatabaseVersion, triggerFullImport } from '../../services/api';
@@ -5,27 +6,32 @@ function Footer() {
const [dbVersion, setDbVersion] = useState(null); const [dbVersion, setDbVersion] = useState(null);
const [importing, setImporting] = useState(false); const [importing, setImporting] = useState(false);
const [error, setError] = useState(null); const [error, setError] = useState(null);
const [importResult, setImportResult] = useState(null); // store import result for modal const [showModal, setShowModal] = useState(false);
const [modalMessage, setModalMessage] = useState('');
// Fetch DB version on mount // Fetch DB version on mount
useEffect(() => { useEffect(() => {
fetchDatabaseVersion() fetchDatabaseVersion()
.then(data => setDbVersion(data.database_version)) .then(data => setDbVersion(data.database_version))
.catch(err => setError(err.message)); .catch(err => {
setDbVersion('N/A');
setModalMessage(`Failed to fetch DB version: ${err.message}`);
setShowModal(true);
});
}, []); }, []);
const handleImport = async () => { const handleImport = async () => {
setImporting(true); setImporting(true);
setError(null); setError(null);
try { try {
const result = await triggerFullImport(); // result contains message, version, sets, cards, duration const result = await triggerFullImport();
setImportResult(result); const data = await fetchDatabaseVersion();
setDbVersion(data.database_version);
// Update displayed DB version setModalMessage(result.message || 'Import completed');
const versionData = await fetchDatabaseVersion(); setShowModal(true);
setDbVersion(versionData.database_version);
} catch (err) { } catch (err) {
setError(err.message); setModalMessage(`Import failed: ${err.message}`);
setShowModal(true);
} finally { } finally {
setImporting(false); setImporting(false);
} }
@@ -38,18 +44,12 @@ function Footer() {
<button onClick={handleImport} disabled={importing}> <button onClick={handleImport} disabled={importing}>
{importing ? 'Importing...' : 'Full Import'} {importing ? 'Importing...' : 'Full Import'}
</button> </button>
{error && <span style={{ color: 'red' }}>{error}</span>}
</div> </div>
{importResult && ( {showModal && (
<div className="import-modal"> <div className="import-modal">
<h3>Import Result</h3> <div>{modalMessage}</div>
<p>{importResult.message}</p> <button onClick={() => setShowModal(false)}>Close</button>
<p>Version: {importResult.version}</p>
<p>Sets imported: {importResult.sets?.total || 'N/A'}</p>
<p>Cards imported: {importResult.cards?.total || 'N/A'}</p>
<p>Duration: {importResult.duration_seconds}s</p>
<button onClick={() => setImportResult(null)}>Close</button>
</div> </div>
)} )}
</> </>