From f78402e021e20ae78f53fbb9d353aacabdc341a6 Mon Sep 17 00:00:00 2001 From: Syco21 Date: Sun, 29 Mar 2026 19:15:13 +0200 Subject: [PATCH] Footer --- src/components/Footer/Footer.jsx | 57 ++++++++++++++++++++++++++++++++ src/pages/HomePage.jsx | 2 ++ 2 files changed, 59 insertions(+) create mode 100644 src/components/Footer/Footer.jsx diff --git a/src/components/Footer/Footer.jsx b/src/components/Footer/Footer.jsx new file mode 100644 index 0000000..f187bb5 --- /dev/null +++ b/src/components/Footer/Footer.jsx @@ -0,0 +1,57 @@ +import React, { useEffect, useState } from 'react'; +import { fetchDatabaseVersion, triggerFullImport } from '../../services/api'; + +function DatabaseFooter() { + const [dbVersion, setDbVersion] = useState(null); + const [loading, setLoading] = useState(false); + const [importing, setImporting] = useState(false); + const [error, setError] = useState(null); + + // Fetch DB version on mount + useEffect(() => { + fetchDatabaseVersion() + .then(data => setDbVersion(data.database_version)) + .catch(err => setError(err.message)); + }, []); + + const handleImport = async () => { + setImporting(true); + setError(null); + try { + await triggerFullImport(); + // After import, refresh DB version + const data = await fetchDatabaseVersion(); + setDbVersion(data.database_version); + } catch (err) { + setError(err.message); + } finally { + setImporting(false); + } + }; + + return ( +
+ DB Version: {dbVersion || 'Loading...'} + + {error && {error}} +
+ ); +} + +export default DatabaseFooter; \ No newline at end of file diff --git a/src/pages/HomePage.jsx b/src/pages/HomePage.jsx index baa50bb..abe8490 100644 --- a/src/pages/HomePage.jsx +++ b/src/pages/HomePage.jsx @@ -4,6 +4,7 @@ import CardRow from '../components/CardRow/CardRow'; import SearchBar from '../components/SearchBar/SearchBar'; import { CardContext } from '../store/CardContext'; import { fetchCards, fetchCardImage } from '../services/api'; +import DatabaseFooter from '../components/DatabaseFooter/DatabaseFooter'; // Debounce hook function useDebouncedValue(value, delay = 250) { @@ -87,6 +88,7 @@ function HomePage() {

Click a card to see its image

)} + ); }