diff --git a/packages/api/src/generated/graphql.ts b/packages/api/src/generated/graphql.ts index 6a436da8b..cb0724295 100644 --- a/packages/api/src/generated/graphql.ts +++ b/packages/api/src/generated/graphql.ts @@ -3146,6 +3146,7 @@ export type SearchItem = { folder: Scalars['String']; format?: Maybe; highlights?: Maybe>; + highlightsCount?: Maybe; id: Scalars['ID']; image?: Maybe; isArchived: Scalars['Boolean']; @@ -7481,6 +7482,7 @@ export type SearchItemResolvers; format?: Resolver, ParentType, ContextType>; highlights?: Resolver>, ParentType, ContextType>; + highlightsCount?: Resolver, ParentType, ContextType>; id?: Resolver; image?: Resolver, ParentType, ContextType>; isArchived?: Resolver; diff --git a/packages/api/src/generated/schema.graphql b/packages/api/src/generated/schema.graphql index fe2b268d4..aec51f4ba 100644 --- a/packages/api/src/generated/schema.graphql +++ b/packages/api/src/generated/schema.graphql @@ -2415,6 +2415,7 @@ type SearchItem { folder: String! format: String highlights: [Highlight!] + highlightsCount: Int id: ID! image: String isArchived: Boolean! diff --git a/packages/api/src/resolvers/function_resolvers.ts b/packages/api/src/resolvers/function_resolvers.ts index ff95009c1..3f9ef86ec 100644 --- a/packages/api/src/resolvers/function_resolvers.ts +++ b/packages/api/src/resolvers/function_resolvers.ts @@ -585,6 +585,7 @@ export const functionResolvers = { }, isArchived: (item: LibraryItem) => !!item.archivedAt, pageType: (item: LibraryItem) => item.itemType, + highlightsCount: (item: LibraryItem) => item.highlightAnnotations?.length, ...readingProgressHandlers, }, Subscription: { diff --git a/packages/api/src/schema.ts b/packages/api/src/schema.ts index 9cb9343e9..f2de7a2c9 100755 --- a/packages/api/src/schema.ts +++ b/packages/api/src/schema.ts @@ -1680,6 +1680,7 @@ const schema = gql` format: String score: Float seenAt: Date + highlightsCount: Int } type SearchItemEdge { diff --git a/packages/web/components/patterns/LibraryCards/LibraryCardStyles.tsx b/packages/web/components/patterns/LibraryCards/LibraryCardStyles.tsx index 19ee4e029..2765ec919 100644 --- a/packages/web/components/patterns/LibraryCards/LibraryCardStyles.tsx +++ b/packages/web/components/patterns/LibraryCards/LibraryCardStyles.tsx @@ -177,11 +177,7 @@ type LibraryItemMetadataProps = { export function LibraryItemMetadata( props: LibraryItemMetadataProps ): JSX.Element { - const highlightCount = useMemo(() => { - return ( - props.item.highlights?.filter((h) => h.type == 'HIGHLIGHT').length ?? 0 - ) - }, [props.item.highlights]) + const highlightCount = props.item.highlightsCount ?? 0 return ( diff --git a/packages/web/lib/networking/library_items/gql.tsx b/packages/web/lib/networking/library_items/gql.tsx index 930c45745..543b4c1c8 100644 --- a/packages/web/lib/networking/library_items/gql.tsx +++ b/packages/web/lib/networking/library_items/gql.tsx @@ -1,6 +1,6 @@ import { gql } from 'graphql-request' -import { highlightFragment } from '../fragments/highlightFragment' import { articleFragment } from '../fragments/articleFragment' +import { highlightFragment } from '../fragments/highlightFragment' import { labelFragment } from '../fragments/labelFragment' export const recommendationFragment = gql` @@ -69,9 +69,7 @@ export const GQL_SEARCH_QUERY = gql` readAt savedAt wordsCount - highlights { - ...HighlightFields - } + highlightsCount } } pageInfo { @@ -87,7 +85,6 @@ export const GQL_SEARCH_QUERY = gql` } } } - ${highlightFragment} ` export const GQL_SET_LINK_ARCHIVED = gql` diff --git a/packages/web/lib/networking/library_items/useLibraryItems.tsx b/packages/web/lib/networking/library_items/useLibraryItems.tsx index e3512711c..27d2762db 100644 --- a/packages/web/lib/networking/library_items/useLibraryItems.tsx +++ b/packages/web/lib/networking/library_items/useLibraryItems.tsx @@ -998,6 +998,7 @@ export type LibraryItemNode = { aiSummary?: string recommendations?: Recommendation[] highlights?: Highlight[] + highlightsCount?: number } export type Recommendation = {