allow use:folders in search string for new clients to filter inbox items

This commit is contained in:
Hongbo Wu 2023-12-01 12:11:09 +08:00
parent a231278ca6
commit 706ff94cd1
2 changed files with 15 additions and 2 deletions

View file

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

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