diff --git a/src/App.tsx b/src/App.tsx index 991c4f7..ff318ed 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -36,6 +36,7 @@ export default function App() { const [rowStatuses, setRowStatuses] = useState>({}); const [pendingRows, setPendingRows] = useState>({}); const [isSavingAll, setIsSavingAll] = useState(false); + const [refreshTrigger, setRefreshTrigger] = useState(0); useEffect(() => { console.log('[App] session changed:', session ? 'logged in' : 'logged out'); @@ -204,7 +205,7 @@ export default function App() { }; if (session) loadDefaultData(); - }, [session]); + }, [session, refreshTrigger]); const handleFileUpload = (e: React.ChangeEvent) => { const file = e.target.files?.[0]; @@ -475,6 +476,7 @@ export default function App() { stats={stats} activeModule={activeModule} onExport={handleExport} + onRefresh={() => { setRefreshTrigger(t => t + 1); }} hasData={appState.data.length > 0} hasUnsavedChanges={appState.hasUnsavedChanges} userEmail={session.user.email} diff --git a/src/components/TopBar.tsx b/src/components/TopBar.tsx index 041782d..5fb625d 100644 --- a/src/components/TopBar.tsx +++ b/src/components/TopBar.tsx @@ -6,6 +6,7 @@ interface TopBarProps { stats: any; activeModule?: string; onExport: () => void; + onRefresh?: () => void; hasData: boolean; hasUnsavedChanges: boolean; userEmail?: string; @@ -21,7 +22,7 @@ interface TopBarProps { isSavingAll: boolean; } -export function TopBar({ stats, activeModule, onExport, hasData, hasUnsavedChanges, userEmail, onSignOut, canUndo, onUndo, undoMessage, undoSteps, pendingCount, pendingChanges, onSaveAll, onRevertRow, isSavingAll }: TopBarProps) { +export function TopBar({ stats, activeModule, onExport, onRefresh, hasData, hasUnsavedChanges, userEmail, onSignOut, canUndo, onUndo, undoMessage, undoSteps, pendingCount, pendingChanges, onSaveAll, onRevertRow, isSavingAll }: TopBarProps) { const [showPending, setShowPending] = useState(false); const dropdownRef = useRef(null); @@ -167,6 +168,17 @@ export function TopBar({ stats, activeModule, onExport, hasData, hasUnsavedChang )} + {onRefresh && ( + + )} +