feat(extraordinary-expenses): Add module for extraordinary expenses
Introduces a new module to manage and track extraordinary expenses within condominiums. This includes defining expense items, sharing arrangements, and attaching relevant documents. The module adds new types for `ExpenseItem`, `ExpenseShare`, and `ExtraordinaryExpense`. Mock database functions are updated to support fetching, creating, and managing these expenses. UI components in `Layout.tsx` and `Settings.tsx` are modified to include navigation and feature toggling for extraordinary expenses. Additionally, new routes are added in `App.tsx` for both administrative and user-facing views of these expenses.
This commit is contained in:
22
App.tsx
22
App.tsx
@@ -1,4 +1,3 @@
|
||||
|
||||
import React from 'react';
|
||||
import { HashRouter, Routes, Route, Navigate, useLocation } from 'react-router-dom';
|
||||
import { Layout } from './components/Layout';
|
||||
@@ -7,6 +6,8 @@ import { FamilyDetail } from './pages/FamilyDetail';
|
||||
import { SettingsPage } from './pages/Settings';
|
||||
import { TicketsPage } from './pages/Tickets';
|
||||
import { ReportsPage } from './pages/Reports';
|
||||
import { ExtraordinaryAdmin } from './pages/ExtraordinaryAdmin';
|
||||
import { ExtraordinaryUser } from './pages/ExtraordinaryUser';
|
||||
import { LoginPage } from './pages/Login';
|
||||
import { CondoService } from './services/mockDb';
|
||||
|
||||
@@ -21,6 +22,18 @@ const ProtectedRoute = ({ children }: { children?: React.ReactNode }) => {
|
||||
return <>{children}</>;
|
||||
};
|
||||
|
||||
// Route wrapper that checks for Admin/PowerUser
|
||||
const AdminRoute = ({ children }: { children?: React.ReactNode }) => {
|
||||
const user = CondoService.getCurrentUser();
|
||||
const isAdmin = user?.role === 'admin' || user?.role === 'poweruser';
|
||||
|
||||
if (!isAdmin) {
|
||||
// Redirect regular users to their own view
|
||||
return <ExtraordinaryUser />;
|
||||
}
|
||||
return <>{children}</>;
|
||||
};
|
||||
|
||||
const App: React.FC = () => {
|
||||
return (
|
||||
<HashRouter>
|
||||
@@ -36,6 +49,11 @@ const App: React.FC = () => {
|
||||
<Route path="family/:id" element={<FamilyDetail />} />
|
||||
<Route path="tickets" element={<TicketsPage />} />
|
||||
<Route path="reports" element={<ReportsPage />} />
|
||||
<Route path="extraordinary" element={
|
||||
<AdminRoute>
|
||||
<ExtraordinaryAdmin />
|
||||
</AdminRoute>
|
||||
} />
|
||||
<Route path="settings" element={<SettingsPage />} />
|
||||
</Route>
|
||||
|
||||
@@ -45,4 +63,4 @@ const App: React.FC = () => {
|
||||
);
|
||||
};
|
||||
|
||||
export default App;
|
||||
export default App;
|
||||
Reference in New Issue
Block a user