1- import { useState } from 'react' ;
1+ import { useState , useEffect } from 'react' ;
22import { useParams } from 'react-router-dom' ;
33import { ReportViewer , ReportBuilder } from '@object-ui/plugin-report' ;
44import { Empty , EmptyTitle , EmptyDescription , Button } from '@object-ui/components' ;
5- import { PenLine , ChevronLeft , BarChart3 } from 'lucide-react' ;
5+ import { PenLine , ChevronLeft , BarChart3 , Loader2 } from 'lucide-react' ;
66import { MetadataToggle , MetadataPanel , useMetadataInspector } from './MetadataInspector' ;
77import { useMetadata } from '../context/MetadataProvider' ;
88
@@ -24,10 +24,23 @@ export function ReportView({ dataSource: _dataSource }: { dataSource?: any }) {
2424 const [ isEditing , setIsEditing ] = useState ( false ) ;
2525
2626 // Find report definition from API-driven metadata
27- const { reports } = useMetadata ( ) ;
27+ const { reports, loading } = useMetadata ( ) ;
2828 const initialReport = reports ?. find ( ( r : any ) => r . name === reportName ) ;
2929 const [ reportData , setReportData ] = useState ( initialReport ) ;
3030
31+ // Sync reportData when metadata finishes loading or reportName changes
32+ useEffect ( ( ) => {
33+ setReportData ( initialReport ) ;
34+ } , [ initialReport ] ) ;
35+
36+ if ( loading ) {
37+ return (
38+ < div className = "h-full flex items-center justify-center p-8" >
39+ < Loader2 className = "h-8 w-8 animate-spin text-muted-foreground" />
40+ </ div >
41+ ) ;
42+ }
43+
3144 if ( ! initialReport ) {
3245 return (
3346 < div className = "h-full flex items-center justify-center p-8" >
0 commit comments