@@ -6,13 +6,15 @@ import { pathExists, getLineCount, getIconForLogLevel, getLogItems, parseReportT
66export class LogViewerProvider implements vscode . TreeDataProvider < LogItem > , vscode . Disposable {
77 private _onDidChangeTreeData : vscode . EventEmitter < LogItem | undefined | void > = new vscode . EventEmitter < LogItem | undefined | void > ( ) ;
88 readonly onDidChangeTreeData : vscode . Event < LogItem | undefined | void > = this . _onDidChangeTreeData . event ;
9- private statusBarItem : vscode . StatusBarItem ;
9+ public static statusBarItem : vscode . StatusBarItem ;
1010 private groupByMessage : boolean ;
1111
1212 constructor ( private workspaceRoot : string ) {
13- this . statusBarItem = vscode . window . createStatusBarItem ( vscode . StatusBarAlignment . Left , 100 ) ;
14- this . statusBarItem . command = 'magento-log-viewer.refreshLogFiles' ;
15- this . statusBarItem . show ( ) ;
13+ if ( ! LogViewerProvider . statusBarItem ) {
14+ LogViewerProvider . statusBarItem = vscode . window . createStatusBarItem ( vscode . StatusBarAlignment . Left , 100 ) ;
15+ LogViewerProvider . statusBarItem . command = 'magento-log-viewer.refreshLogFiles' ;
16+ LogViewerProvider . statusBarItem . show ( ) ;
17+ }
1618 this . groupByMessage = vscode . workspace . getConfiguration ( 'magentoLogViewer' ) . get < boolean > ( 'groupByMessage' , true ) ;
1719 this . updateBadge ( ) ;
1820 this . updateRefreshButtonVisibility ( ) ;
@@ -191,11 +193,11 @@ export class LogViewerProvider implements vscode.TreeDataProvider<LogItem>, vsco
191193 const logPath = path . join ( this . workspaceRoot , 'var' , 'log' ) ;
192194 const logFiles = this . getLogFilesWithoutUpdatingBadge ( logPath ) ;
193195 const totalEntries = logFiles . reduce ( ( count , file ) => count + parseInt ( file . description ?. match ( / \d + / ) ?. [ 0 ] || '0' , 10 ) , 0 ) ;
194- this . statusBarItem . text = `Magento Log-Entries: ${ totalEntries } ` ;
196+ LogViewerProvider . statusBarItem . text = `Magento Log-Entries: ${ totalEntries } ` ;
195197 }
196198
197199 dispose ( ) {
198- this . statusBarItem . dispose ( ) ;
200+ // Do not dispose the status bar item here to avoid multiple creations
199201 }
200202}
201203
@@ -230,6 +232,9 @@ export class ReportViewerProvider implements vscode.TreeDataProvider<LogItem>, v
230232 } else {
231233 const reportPath = path . join ( this . workspaceRoot , 'var' , 'report' ) ;
232234 const reportItems = this . getLogItems ( reportPath , 'Reports' ) ;
235+ if ( reportItems . length === 0 ) {
236+ return Promise . resolve ( [ new LogItem ( 'No report files found' , vscode . TreeItemCollapsibleState . None ) ] ) ;
237+ }
233238 return Promise . resolve ( reportItems ) ;
234239 }
235240 }
0 commit comments