From 2dd0586bb16cb29c7c2a538e82aca48f247910e6 Mon Sep 17 00:00:00 2001 From: Aman Harwara Date: Thu, 3 Nov 2022 21:04:55 +0530 Subject: [PATCH] fix: archived/trashed items getting unselected when changed (#1932) --- .../ItemList/ItemListController.ts | 37 +++++++++++++++---- 1 file changed, 30 insertions(+), 7 deletions(-) diff --git a/packages/web/src/javascripts/Controllers/ItemList/ItemListController.ts b/packages/web/src/javascripts/Controllers/ItemList/ItemListController.ts index 2b742bcc4..c4ff7db96 100644 --- a/packages/web/src/javascripts/Controllers/ItemList/ItemListController.ts +++ b/packages/web/src/javascripts/Controllers/ItemList/ItemListController.ts @@ -393,15 +393,38 @@ export class ItemListController extends AbstractViewController implements Intern } private shouldSelectNextItemOrCreateNewNote = (activeItem: SNNote | FileItem | undefined) => { - const shouldShowTrashedNotes = - this.navigationController.isInSystemView(SystemViewId.TrashedNotes) || this.searchOptionsController.includeTrashed + const selectedView = this.navigationController.selected - const shouldShowArchivedNotes = - this.navigationController.isInSystemView(SystemViewId.ArchivedNotes) || - this.searchOptionsController.includeArchived || - this.application.getPreference(PrefKey.NotesShowArchived, PrefDefaults[PrefKey.NotesShowArchived]) + const isActiveItemTrashed = activeItem?.trashed + const isActiveItemArchived = activeItem?.archived - return (activeItem?.trashed && !shouldShowTrashedNotes) || (activeItem?.archived && !shouldShowArchivedNotes) + if (isActiveItemTrashed) { + const selectedSmartViewShowsTrashed = + selectedView instanceof SmartView && selectedView.predicate.keypathIncludesString('trashed') + + const shouldShowTrashedNotes = + this.navigationController.isInSystemView(SystemViewId.TrashedNotes) || + this.searchOptionsController.includeTrashed || + selectedSmartViewShowsTrashed || + this.displayOptions.includeTrashed + + return !shouldShowTrashedNotes + } + + if (isActiveItemArchived) { + const selectedSmartViewShowsArchived = + selectedView instanceof SmartView && selectedView.predicate.keypathIncludesString('archived') + + const shouldShowArchivedNotes = + this.navigationController.isInSystemView(SystemViewId.ArchivedNotes) || + this.searchOptionsController.includeArchived || + selectedSmartViewShowsArchived || + this.displayOptions.includeArchived + + return !shouldShowArchivedNotes + } + + return false } private shouldSelectActiveItem = (activeItem: SNNote | FileItem | undefined) => {