@@ -6,13 +6,15 @@ import { pathExists, getLineCount, getIconForLogLevel, getLogItems, parseReportT
6
6
export class LogViewerProvider implements vscode . TreeDataProvider < LogItem > , vscode . Disposable {
7
7
private _onDidChangeTreeData : vscode . EventEmitter < LogItem | undefined | void > = new vscode . EventEmitter < LogItem | undefined | void > ( ) ;
8
8
readonly onDidChangeTreeData : vscode . Event < LogItem | undefined | void > = this . _onDidChangeTreeData . event ;
9
- private statusBarItem : vscode . StatusBarItem ;
9
+ public static statusBarItem : vscode . StatusBarItem ;
10
10
private groupByMessage : boolean ;
11
11
12
12
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
+ }
16
18
this . groupByMessage = vscode . workspace . getConfiguration ( 'magentoLogViewer' ) . get < boolean > ( 'groupByMessage' , true ) ;
17
19
this . updateBadge ( ) ;
18
20
this . updateRefreshButtonVisibility ( ) ;
@@ -191,11 +193,11 @@ export class LogViewerProvider implements vscode.TreeDataProvider<LogItem>, vsco
191
193
const logPath = path . join ( this . workspaceRoot , 'var' , 'log' ) ;
192
194
const logFiles = this . getLogFilesWithoutUpdatingBadge ( logPath ) ;
193
195
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 } ` ;
195
197
}
196
198
197
199
dispose ( ) {
198
- this . statusBarItem . dispose ( ) ;
200
+ // Do not dispose the status bar item here to avoid multiple creations
199
201
}
200
202
}
201
203
@@ -230,6 +232,9 @@ export class ReportViewerProvider implements vscode.TreeDataProvider<LogItem>, v
230
232
} else {
231
233
const reportPath = path . join ( this . workspaceRoot , 'var' , 'report' ) ;
232
234
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
+ }
233
238
return Promise . resolve ( reportItems ) ;
234
239
}
235
240
}
0 commit comments