From 706ff94cd164c89287691882d820790441cfba40 Mon Sep 17 00:00:00 2001 From: Hongbo Wu Date: Fri, 1 Dec 2023 12:11:09 +0800 Subject: [PATCH 1/2] allow use:folders in search string for new clients to filter inbox items --- packages/api/src/services/library_item.ts | 12 ++++++++++-- packages/api/src/utils/search.ts | 5 +++++ 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/packages/api/src/services/library_item.ts b/packages/api/src/services/library_item.ts index 515abdb6b..957dccebc 100644 --- a/packages/api/src/services/library_item.ts +++ b/packages/api/src/services/library_item.ts @@ -46,6 +46,7 @@ export interface SearchArgs { includeContent?: boolean noFilters?: NoFilter[] rangeFilters?: RangeFilter[] + useFolders?: boolean } export interface SearchResultItem { @@ -106,9 +107,16 @@ const buildWhereClause = ( if (args.inFilter !== InFilter.ALL) { switch (args.inFilter) { - case InFilter.INBOX: - queryBuilder.andWhere('library_item.archived_at IS NULL') + case InFilter.INBOX: { + // if useFolders is true, we only return items in the inbox folder + args.useFolders && + queryBuilder.andWhere("library_item.folder = 'inbox'") + // for old clients, we return items that are not archived + queryBuilder.andWhere( + 'library_item.archived_at IS NULL AND library_item.deleted_at IS NULL' + ) break + } case InFilter.ARCHIVE: queryBuilder.andWhere('library_item.archived_at IS NOT NULL') break diff --git a/packages/api/src/utils/search.ts b/packages/api/src/utils/search.ts index dde0e019d..bfd0fe1e0 100644 --- a/packages/api/src/utils/search.ts +++ b/packages/api/src/utils/search.ts @@ -42,6 +42,7 @@ export interface SearchFilter { recommendedBy?: string noFilters: NoFilter[] rangeFilters: RangeFilter[] + useFolders?: boolean } export enum LabelFilterType { @@ -444,6 +445,7 @@ export const parseSearchQuery = (query: string | undefined): SearchFilter => { 'rss', 'wordsCount', 'readPosition', + 'use', ], tokenize: true, }) @@ -546,6 +548,9 @@ export const parseSearchQuery = (query: string | undefined): SearchFilter => { rangeFilter && result.rangeFilters.push(rangeFilter) break } + case 'use': + result.useFolders = keyword.value === 'folders' + break } } } From fe86085245da6c007ca6923fc3e66db387cde57e Mon Sep 17 00:00:00 2001 From: Hongbo Wu Date: Fri, 1 Dec 2023 12:19:05 +0800 Subject: [PATCH 2/2] update comment --- packages/api/src/services/library_item.ts | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/packages/api/src/services/library_item.ts b/packages/api/src/services/library_item.ts index 957dccebc..dbb0a0998 100644 --- a/packages/api/src/services/library_item.ts +++ b/packages/api/src/services/library_item.ts @@ -112,9 +112,7 @@ const buildWhereClause = ( args.useFolders && queryBuilder.andWhere("library_item.folder = 'inbox'") // for old clients, we return items that are not archived - queryBuilder.andWhere( - 'library_item.archived_at IS NULL AND library_item.deleted_at IS NULL' - ) + queryBuilder.andWhere('library_item.archived_at IS NULL') break } case InFilter.ARCHIVE: