From 497b6e9f720cde95e9371ac0da8140423f4991d8 Mon Sep 17 00:00:00 2001 From: Hongbo Wu Date: Fri, 13 Oct 2023 18:27:57 +0800 Subject: [PATCH] fetch highlights if necessary and before converting content to markdown --- packages/api/src/resolvers/article/index.ts | 18 +++++++++++++++++- .../api/src/resolvers/function_resolvers.ts | 13 ------------- 2 files changed, 17 insertions(+), 14 deletions(-) diff --git a/packages/api/src/resolvers/article/index.ts b/packages/api/src/resolvers/article/index.ts index af551b85e..bf26872c5 100644 --- a/packages/api/src/resolvers/article/index.ts +++ b/packages/api/src/resolvers/article/index.ts @@ -53,6 +53,7 @@ import { getInternalLabelWithColor } from '../../repository/label' import { libraryItemRepository } from '../../repository/library_item' import { userRepository } from '../../repository/user' import { createPageSaveRequest } from '../../services/create_page_save_request' +import { findHighlightsByLibraryItemId } from '../../services/highlights' import { addLabelsToLibraryItem, findLabelsByIds, @@ -631,7 +632,7 @@ export const searchResolver = authorized< SearchSuccess, SearchError, QuerySearchArgs ->(async (_obj, params, { uid, log }) => { +>(async (_obj, params, { log, uid }) => { const startCursor = params.after || '' const first = params.first || 10 @@ -664,6 +665,21 @@ export const searchResolver = authorized< libraryItems.pop() } + await Promise.all( + libraryItems.map(async (libraryItem) => { + if ( + libraryItem.highlightAnnotations && + libraryItem.highlightAnnotations.length > 0 + ) { + // fetch highlights for each item + libraryItem.highlights = await findHighlightsByLibraryItemId( + libraryItem.id, + uid + ) + } + }) + ) + const edges = libraryItems.map((libraryItem) => { if (libraryItem.siteIcon && !isBase64Image(libraryItem.siteIcon)) { libraryItem.siteIcon = createImageProxyUrl(libraryItem.siteIcon, 128, 128) diff --git a/packages/api/src/resolvers/function_resolvers.ts b/packages/api/src/resolvers/function_resolvers.ts index 20fb682b6..c2cc34f9a 100644 --- a/packages/api/src/resolvers/function_resolvers.ts +++ b/packages/api/src/resolvers/function_resolvers.ts @@ -6,18 +6,15 @@ import { Subscription } from '../entity/subscription' import { Article, - Highlight, Label, PageType, Recommendation, SearchItem, } from '../generated/graphql' -import { findHighlightsByLibraryItemId } from '../services/highlights' import { findLabelsByLibraryItemId } from '../services/labels' import { findRecommendationsByLibraryItemId } from '../services/recommendation' import { findUploadFileById } from '../services/upload_file' import { - highlightDataToHighlight, recommandationDataToRecommendation, validatedDate, wordsCount, @@ -486,16 +483,6 @@ export const functionResolvers = { if (item.wordCount) return item.wordCount return item.content ? wordsCount(item.content) : undefined }, - async highlights( - item: { id: string; highlights?: Highlight[] }, - _: unknown, - ctx: WithDataSourcesContext - ) { - if (item.highlights) return item.highlights - - const highlights = await findHighlightsByLibraryItemId(item.id, ctx.uid) - return highlights.map(highlightDataToHighlight) - }, async labels( item: { id: string; labels?: Label[] }, _: unknown,