import React, { useEffect } from 'react';
import { BrowserRouter as Router, Routes, Route, Navigate, useNavigate } from 'react-router-dom';
import axios from 'axios';
import { FinanceProvider } from './contexts/FinanceContext';
import Navbar from './components/Navbar';
import Sidebar from './components/Sidebar';
import Home from './pages/Home';
import Expenses from './pages/Expenses';
// import Budget from './pages/Budget';
import Investments from './pages/Investments';
// import Goals from './pages/Goals';
// import ReportsPage from './pages/ReportsPage';
import './index.css';
import Login from './components/Login';
import Settings from './pages/Settings';
// Component kiểm tra quyền truy cập + check initialBudget bằng axios
const ProtectedRoute = ({ children }) => {
const token = localStorage.getItem('token');
const navigate = useNavigate();
useEffect(() => {
const checkBudget = async () => {
if (token) {
try {
const response = await axios.get('https://backend-rockefeller-finance.onrender.com/api/initial-budget', {
headers: { Authorization: `Bearer ${token}` },
});
if (response.data.initialBudget === 0) {
navigate('/expenses');
}
} catch (err) {
console.error('Lỗi kiểm tra ngân sách:', err);
navigate('/login');
}
}
};
checkBudget();
}, [token, navigate]);
return token ? (
);
};
function AppLayout() {
// Layout chung cho các trang yêu cầu đăng nhập:
return (
} />
} />
} />
{/* } /> */}
} />
{/* } /> */}
{/* } /> */}
{/* Nếu muốn thêm routes khác hãy thêm ở đây */}
} />
);
}
const App = () => {
return (
{/* Trang login độc lập, không dùng sidebar, navbar */}
} />
{/* Đóng gói layout chung với kiểm tra token */}
}
/>
{/* Nếu muốn redirect trang root, có thể chuyển thành: */}
{/* } /> */}
);
};
export default App;
{children}
) : (