diff --git a/extensions/notebook/src/book/bookTreeView.ts b/extensions/notebook/src/book/bookTreeView.ts index 3637c87c5f..5224184718 100644 --- a/extensions/notebook/src/book/bookTreeView.ts +++ b/extensions/notebook/src/book/bookTreeView.ts @@ -24,27 +24,29 @@ export class BookTreeViewProvider implements vscode.TreeDataProvider 0; - vscode.commands.executeCommand('setContext', 'bookOpened', bookOpened); - } + constructor(workspaceFolders: vscode.WorkspaceFolder[], extensionContext: vscode.ExtensionContext) { + let workspacePaths: string[] = workspaceFolders.map(a => a.uri.fsPath); + this._tableOfContentsPath = this.getTableOfContentFiles(workspacePaths); + let bookOpened: boolean = this._tableOfContentsPath && this._tableOfContentsPath.length > 0; + vscode.commands.executeCommand('setContext', 'bookOpened', bookOpened); this._extensionContext = extensionContext; } - private getTocFiles(dir: string): string[] { - let allFiles: string[] = []; - let files = fs.readdirSync(dir); - for (let i in files) { - let name = path.join(dir, files[i]); - if (fs.statSync(name).isDirectory()) { - allFiles = allFiles.concat(this.getTocFiles(name)); - } else if (files[i] === 'toc.yml') { - allFiles.push(name); - } - } - return allFiles; + private getTableOfContentFiles(directories: string[]): string[] { + let tableOfContentPaths: string[] = []; + let paths: string[]; + directories.forEach(dir => { + paths = fs.readdirSync(dir); + paths.forEach(filename => { + let fullPath = path.join(dir, filename); + if (fs.statSync(fullPath).isDirectory()) { + tableOfContentPaths = tableOfContentPaths.concat(this.getTableOfContentFiles([fullPath])); + } else if (filename === 'toc.yml') { + tableOfContentPaths.push(fullPath); + } + }); + }); + return tableOfContentPaths; } async openNotebook(resource: string): Promise { @@ -231,4 +233,4 @@ export class BookTreeViewProvider implements vscode.TreeDataProvider { - - const bookTreeViewProvider = new BookTreeViewProvider(vscode.workspace.rootPath || '', extensionContext); + const bookTreeViewProvider = new BookTreeViewProvider(vscode.workspace.workspaceFolders || [], extensionContext); extensionContext.subscriptions.push(vscode.window.registerTreeDataProvider('bookTreeView', bookTreeViewProvider)); extensionContext.subscriptions.push(azdata.nb.registerNavigationProvider(bookTreeViewProvider)); extensionContext.subscriptions.push(vscode.commands.registerCommand('bookTreeView.openNotebook', (resource) => bookTreeViewProvider.openNotebook(resource))); @@ -248,4 +247,4 @@ export function deactivate() { if (controller) { controller.deactivate(); } -} \ No newline at end of file +}