You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

81 lines
2.1 KiB
JavaScript

import React, { useState } from 'react';
import { BrowserRouter as Router, Routes, Route, Navigate } from 'react-router-dom';
import { AuthProvider, useAuth } from './contexts/AuthContext';
// import ProtectedRoute from './components/ProtectedRoute';
import Login from './components/Users/Login';
import Main from './components/Main';
import ReportEditor from './components/ReportEditor/ReportEditor';
import './App.css';
import { NomenclatureProvider } from './contexts/NomenclatureContext';
import { NomenclatureDataProvider } from './contexts/NomenclatureDataContext';
// function MainApp() {
// const [selectedPort, setSelectedPort] = useState(null);
// const { readings, isConnected, error } = useSerialData();
// const filteredReadings = selectedPort
// ? readings.filter(r => r.port === selectedPort)
// : readings;
// return (
// <div className="App">
// <Header />
// <div className="status-bar">
// {isConnected ? (
// <span className="status-connected">● Connected to Serial Bridge</span>
// ) : (
// <span className="status-disconnected">● Disconnected</span>
// )}
// {error && (
// <span className="status-error">{error}</span>
// )}
// </div>
// <div className="container">
// <DataDisplay readings={filteredReadings} selectedPort={selectedPort} />
// </div>
// </div>
// );
// }
function AppContent() {
const { user, login, logout, loading, isAuthenticated } = useAuth();
if (loading) {
return (
<div className="loading">
<p>Loading...</p>
</div>
);
}
if (!isAuthenticated) {
return <Login onLogin={login} />;
}
return (
<NomenclatureProvider>
<NomenclatureDataProvider>
<Routes>
<Route path="/" element={<Main />} />
<Route path="/report-editor" element={<ReportEditor />} />
</Routes>
</NomenclatureDataProvider>
</NomenclatureProvider>
);
}
function App() {
return (
<Router>
<AuthProvider>
<AppContent />
</AuthProvider>
</Router>
);
}
export default App;