From 609d30adbb7fc99b0d869d54d0f6ee46f1acfead Mon Sep 17 00:00:00 2001 From: Hongbo Wu Date: Wed, 15 Nov 2023 10:22:58 +0800 Subject: [PATCH] compatiblity with old saved searches --- packages/api/src/services/create_user.ts | 2 +- packages/api/src/services/library_item.ts | 4 +++- packages/api/src/utils/search.ts | 9 ++++++++- .../web/components/templates/homeFeed/EmptyLibrary.tsx | 4 ++-- .../components/templates/homeFeed/LibraryFilterMenu.tsx | 2 +- 5 files changed, 15 insertions(+), 6 deletions(-) diff --git a/packages/api/src/services/create_user.ts b/packages/api/src/services/create_user.ts index 6fd8e2033..a04ff8164 100644 --- a/packages/api/src/services/create_user.ts +++ b/packages/api/src/services/create_user.ts @@ -159,7 +159,7 @@ const createDefaultFiltersForUser = name: 'Continue Reading', filter: 'in:inbox sort:read-desc is:reading', }, - { name: 'Non-Feed Items', filter: 'in:library' }, + { name: 'Non-Feed Items', filter: 'no:subscription' }, { name: 'Highlights', filter: 'has:highlights mode:highlights' }, { name: 'Unlabeled', filter: 'no:label' }, { name: 'Oldest First', filter: 'sort:saved-asc' }, diff --git a/packages/api/src/services/library_item.ts b/packages/api/src/services/library_item.ts index 5cbfeb134..6d66184a3 100644 --- a/packages/api/src/services/library_item.ts +++ b/packages/api/src/services/library_item.ts @@ -232,7 +232,9 @@ const buildWhereClause = ( if (args.noFilters) { args.noFilters.forEach((filter) => { - queryBuilder.andWhere(`library_item.${filter.field} = '{}'`) + queryBuilder.andWhere( + `library_item.${filter.field} = '{}' OR library_item.${filter.field} IS NULL` + ) }) } diff --git a/packages/api/src/utils/search.ts b/packages/api/src/utils/search.ts index af8e26d9f..dde0e019d 100644 --- a/packages/api/src/utils/search.ts +++ b/packages/api/src/utils/search.ts @@ -386,13 +386,20 @@ const parseNoFilter = (str?: string): NoFilter | undefined => { return { field: 'highlight_annotations' } case 'label': return { field: 'label_names' } + case 'subscription': + return { field: 'subscription' } } return undefined } export const parseSearchQuery = (query: string | undefined): SearchFilter => { - const searchQuery = query ? query.replace(/\W\s":/g, '') : undefined + const searchQuery = query + ? query + .replace(/\W\s":/g, '') + .replace('in:subscription', 'has:subscriptions') // compatibility with old search + .replace('in:library', 'no:subscription') // compatibility with old search + : undefined const result: SearchFilter = { query: searchQuery, readFilter: ReadFilter.ALL, diff --git a/packages/web/components/templates/homeFeed/EmptyLibrary.tsx b/packages/web/components/templates/homeFeed/EmptyLibrary.tsx index 72da7891b..23dfe3d7b 100644 --- a/packages/web/components/templates/homeFeed/EmptyLibrary.tsx +++ b/packages/web/components/templates/homeFeed/EmptyLibrary.tsx @@ -169,7 +169,7 @@ export const EmptyLibrary = (props: EmptyLibraryProps) => { return 'inbox' case 'in:inbox sort:read-desc is:reading': return 'continue' - case 'in:library': + case 'no:subscription': return 'non-feed' case 'has:highlights mode:highlights': return 'highlight' @@ -181,7 +181,7 @@ export const EmptyLibrary = (props: EmptyLibraryProps) => { return 'archive' case 'label:RSS': return 'feed' - case 'in:subscription': + case 'has:subscriptions': return 'subscription' case 'label:Newsletter': return 'newsletter' diff --git a/packages/web/components/templates/homeFeed/LibraryFilterMenu.tsx b/packages/web/components/templates/homeFeed/LibraryFilterMenu.tsx index 13a27dea4..d7bb99f9b 100644 --- a/packages/web/components/templates/homeFeed/LibraryFilterMenu.tsx +++ b/packages/web/components/templates/homeFeed/LibraryFilterMenu.tsx @@ -241,7 +241,7 @@ function Subscriptions( > {!collapsed ? ( <> - +