Update pin/unpin icon after pinning notebook (#20273)

This commit is contained in:
Barbara Valdez
2022-08-12 14:59:07 -07:00
committed by GitHub
parent 4971f1bd1a
commit 2119c96c88
2 changed files with 14 additions and 6 deletions

View File

@@ -16,7 +16,7 @@ import { Deferred } from '../common/promise';
import { IBookTrustManager, BookTrustManager } from './bookTrustManager';
import * as loc from '../common/localizedConstants';
import * as glob from 'fast-glob';
import { getPinnedNotebooks, confirmMessageDialog, getNotebookType, FileExtension, IPinnedNotebook, BookTreeItemType } from '../common/utils';
import { getPinnedNotebooks, getNotebookType, confirmMessageDialog, FileExtension, IPinnedNotebook, BookTreeItemType } from '../common/utils';
import { IBookPinManager, BookPinManager } from './bookPinManager';
import { BookTocManager, IBookTocManager, quickPickResults } from './bookTocManager';
import { CreateBookDialog } from '../dialog/createBookDialog';
@@ -138,7 +138,8 @@ export class BookTreeViewProvider implements vscode.TreeDataProvider<BookTreeIte
let pinStatusChanged = await this.bookPinManager.pinNotebook(bookTreeItem);
sendNotebookActionEvent(NbTelemetryView.Book, NbTelemetryAction.PinNotebook);
if (pinStatusChanged) {
bookTreeItem.contextValue = 'pinnedNotebook';
bookTreeItem.contextValue = BookTreeItemType.pinnedNotebook;
this._onDidChangeTreeData.fire(bookTreeItem);
}
}
}
@@ -148,7 +149,14 @@ export class BookTreeViewProvider implements vscode.TreeDataProvider<BookTreeIte
if (bookPathToUpdate) {
let pinStatusChanged = await this.bookPinManager.unpinNotebook(bookTreeItem);
if (pinStatusChanged) {
bookTreeItem.contextValue = getNotebookType(bookTreeItem.book);
// reset to original context value
bookTreeItem.contextValue = bookTreeItem.book.type === BookTreeItemType.Markdown ? BookTreeItemType.Markdown : getNotebookType(bookTreeItem.book);
// if notebook is not in current book then it is a standalone notebook
let itemOpenedInBookTreeView = this.currentBook?.getNotebook(bookTreeItem.book.contentPath) ?? this.books.find(book => book.bookPath === bookTreeItem.book.contentPath)?.getNotebook(bookTreeItem.book.contentPath);
if (itemOpenedInBookTreeView) {
itemOpenedInBookTreeView.contextValue = bookTreeItem.contextValue;
this._onDidChangeTreeData.fire(itemOpenedInBookTreeView.parent);
}
}
}
}
@@ -264,7 +272,7 @@ export class BookTreeViewProvider implements vscode.TreeDataProvider<BookTreeIte
async addNotebookToPinnedView(bookItem: BookTreeItem): Promise<void> {
let notebookPath: string = bookItem.book.contentPath;
if (notebookPath) {
let notebookDetails: IPinnedNotebook = bookItem.book.root ? { bookPath: bookItem.book.root, notebookPath: notebookPath, title: bookItem.book.title } : { notebookPath: notebookPath };
let notebookDetails: IPinnedNotebook = getNotebookType(bookItem.book) === BookTreeItemType.savedBookNotebook ? { bookPath: bookItem.book.root, notebookPath: notebookPath, title: bookItem.book.title } : { notebookPath: notebookPath };
await this.createAndAddBookModel(notebookPath, true, notebookDetails);
}
}