diff --git a/packages/web/src/javascripts/Components/CommandPalette/CommandPalette.tsx b/packages/web/src/javascripts/Components/CommandPalette/CommandPalette.tsx index 2b50ee9a4d1..e60bc3632c1 100644 --- a/packages/web/src/javascripts/Components/CommandPalette/CommandPalette.tsx +++ b/packages/web/src/javascripts/Components/CommandPalette/CommandPalette.tsx @@ -177,7 +177,7 @@ function CommandPalette() { return } if (decryptedItem instanceof SNNote) { - void application.navigationController.selectHomeNavigationView() + application.itemListController.keepActiveItemOpenForSystemView(decryptedItem.uuid) void application.itemListController.selectItemUsingInstance(decryptedItem, true) } else if (decryptedItem instanceof FileItem) { void application.filesController.handleFileAction({ diff --git a/packages/web/src/javascripts/Controllers/ItemList/ItemListController.ts b/packages/web/src/javascripts/Controllers/ItemList/ItemListController.ts index 9c06856cd09..9de43df80cc 100644 --- a/packages/web/src/javascripts/Controllers/ItemList/ItemListController.ts +++ b/packages/web/src/javascripts/Controllers/ItemList/ItemListController.ts @@ -89,6 +89,7 @@ export class ItemListController includeTrashed: false, includeProtected: true, } + private keepActiveItemOpenUuid: UuidString | undefined webDisplayOptions: WebDisplayOptions = { hideTags: true, hideDate: false, @@ -499,6 +500,10 @@ export class ItemListController !activeItemExistsInUpdatedResults && !isSearching && this.navigationController.isInAnySystemView() if (closeBecauseActiveItemDoesntExistInCurrentSystemView) { + if (activeItem && activeItem.uuid === this.keepActiveItemOpenUuid) { + log(LoggingDomain.Selection, 'shouldCloseActiveItem false due to keepActiveItemOpenUuid') + return false + } log(LoggingDomain.Selection, 'shouldCloseActiveItem closePreviousItemWhenSwitchingToFilesBasedView') return true } @@ -941,6 +946,7 @@ export class ItemListController } handleTagChange = async (userTriggered: boolean) => { + this.clearKeepActiveItemOpenUuid() const activeNoteController = this.getActiveItemController() if (activeNoteController instanceof NoteViewController && activeNoteController.isTemplateNote) { this.closeItemController(activeNoteController) @@ -1196,11 +1202,23 @@ export class ItemListController } } + if (this.keepActiveItemOpenUuid && uuid !== this.keepActiveItemOpenUuid) { + this.clearKeepActiveItemOpenUuid() + } + return { didSelect: this.selectedUuids.has(uuid), } } + keepActiveItemOpenForSystemView = (noteUuid: UuidString): void => { + this.keepActiveItemOpenUuid = noteUuid + } + + private clearKeepActiveItemOpenUuid(): void { + this.keepActiveItemOpenUuid = undefined + } + selectItem = async ( uuid: UuidString, userTriggered?: boolean,