Merge pull request #3190 from omnivore-app/use-folders

allow use:folders in search string for new clients to filter inbox items
This commit is contained in:
Hongbo Wu 2023-12-01 13:41:01 +08:00 committed by GitHub
commit 66b64d098d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 12 additions and 1 deletions

View file

@ -46,6 +46,7 @@ export interface SearchArgs {
includeContent?: boolean
noFilters?: NoFilter[]
rangeFilters?: RangeFilter[]
useFolders?: boolean
}
export interface SearchResultItem {
@ -106,9 +107,14 @@ const buildWhereClause = (
if (args.inFilter !== InFilter.ALL) {
switch (args.inFilter) {
case InFilter.INBOX:
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')
break
}
case InFilter.ARCHIVE:
queryBuilder.andWhere('library_item.archived_at IS NOT NULL')
break

View file

@ -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
}
}
}