diff --git a/packages/api/src/resolvers/article/index.ts b/packages/api/src/resolvers/article/index.ts index 8a4c8c8c3..6a2d03e55 100644 --- a/packages/api/src/resolvers/article/index.ts +++ b/packages/api/src/resolvers/article/index.ts @@ -95,7 +95,11 @@ import { ParsedContentPuppeteer, parsePreparedContent, } from '../../utils/parser' -import { parseSearchQuery, sortParamsToSort } from '../../utils/search' +import { + InFilter, + parseSearchQuery, + sortParamsToSort, +} from '../../utils/search' import { getStorageFileDetails } from '../../utils/uploads' import { itemTypeForContentType } from '../upload_files' @@ -736,7 +740,7 @@ export const updatesSinceResolver = authorized< const sort = sortParamsToSort(sortParams) const startCursor = after || '' - const size = first || 10 + const size = Math.min(first || 10, 100) // limit to 100 items let startDate = new Date(since) if (isNaN(startDate.getTime())) { // for android app compatibility diff --git a/packages/api/src/services/library_item.ts b/packages/api/src/services/library_item.ts index 4448a5964..fd79746ef 100644 --- a/packages/api/src/services/library_item.ts +++ b/packages/api/src/services/library_item.ts @@ -103,40 +103,41 @@ const buildWhereClause = ( }) } - if (args.inFilter !== InFilter.FOLLOWING) { - queryBuilder.andWhere('library_item.is_in_library = true') + if (args.inFilter !== InFilter.ALL) { + if (args.inFilter === InFilter.FOLLOWING) { + queryBuilder + .andWhere('library_item.shared_by IS NOT NULL') + .andWhere('library_item.hidden_at IS NULL') + } else { + queryBuilder.andWhere('library_item.is_in_library = true') - switch (args.inFilter) { - case InFilter.INBOX: - queryBuilder.andWhere('library_item.archived_at IS NULL') - break - case InFilter.ARCHIVE: - queryBuilder.andWhere('library_item.archived_at IS NOT NULL') - break - case InFilter.TRASH: - // return only deleted pages within 14 days - queryBuilder.andWhere( - "library_item.deleted_at >= now() - interval '14 days'" - ) - break - case InFilter.SUBSCRIPTION: - queryBuilder - .andWhere("NOT ('library' ILIKE ANY (library_item.label_names))") - .andWhere('library_item.archived_at IS NULL') - .andWhere('library_item.subscription IS NOT NULL') - break - case InFilter.LIBRARY: - queryBuilder - .andWhere( - "(library_item.subscription IS NULL OR 'library' ILIKE ANY (library_item.label_names))" + switch (args.inFilter) { + case InFilter.INBOX: + queryBuilder.andWhere('library_item.archived_at IS NULL') + break + case InFilter.ARCHIVE: + queryBuilder.andWhere('library_item.archived_at IS NOT NULL') + break + case InFilter.TRASH: + // return only deleted pages within 14 days + queryBuilder.andWhere( + "library_item.deleted_at >= now() - interval '14 days'" ) - .andWhere('library_item.archived_at IS NULL') - break + break + case InFilter.SUBSCRIPTION: + queryBuilder + .andWhere("NOT ('library' ILIKE ANY (library_item.label_names))") + .andWhere('library_item.archived_at IS NULL') + .andWhere('library_item.subscription IS NOT NULL') + break + case InFilter.LIBRARY: + queryBuilder + .andWhere( + "(library_item.subscription IS NULL OR 'library' ILIKE ANY (library_item.label_names))" + ) + .andWhere('library_item.archived_at IS NULL') + } } - } else { - queryBuilder - .andWhere('library_item.shared_by IS NOT NULL') - .andWhere('library_item.hidden_at IS NULL') } if (args.readFilter !== ReadFilter.ALL) { diff --git a/packages/api/src/utils/search.ts b/packages/api/src/utils/search.ts index d9bd61e5a..60f6d64e0 100644 --- a/packages/api/src/utils/search.ts +++ b/packages/api/src/utils/search.ts @@ -138,6 +138,8 @@ const parseInFilter = ( return InFilter.SUBSCRIPTION case 'LIBRARY': return InFilter.LIBRARY + case 'FOLLOWING': + return InFilter.FOLLOWING } return query ? InFilter.ALL : InFilter.INBOX @@ -409,19 +411,7 @@ export const parseSearchQuery = (query: string | undefined): SearchFilter => { } if (!searchQuery) { - return { - query: undefined, - inFilter: InFilter.INBOX, - readFilter: ReadFilter.ALL, - labelFilters: [], - hasFilters: [], - dateFilters: [], - termFilters: [], - matchFilters: [], - ids: [], - noFilters: [], - rangeFilters: [], - } + return result } const parsed = parse(searchQuery, { diff --git a/packages/db/migrations/0145.do.following.sql b/packages/db/migrations/0146.do.following.sql similarity index 100% rename from packages/db/migrations/0145.do.following.sql rename to packages/db/migrations/0146.do.following.sql diff --git a/packages/db/migrations/0145.undo.following.sql b/packages/db/migrations/0146.undo.following.sql similarity index 100% rename from packages/db/migrations/0145.undo.following.sql rename to packages/db/migrations/0146.undo.following.sql