diff --git a/packages/api/src/services/library_item.ts b/packages/api/src/services/library_item.ts index 4864055da..61c796690 100644 --- a/packages/api/src/services/library_item.ts +++ b/packages/api/src/services/library_item.ts @@ -13,6 +13,7 @@ import { libraryItemRepository } from '../repository/library_item' import { SaveFollowingItemRequest } from '../routers/svc/following' import { generateSlug, wordsCount } from '../utils/helpers' import { createThumbnailUrl } from '../utils/imageproxy' +import { parsePreparedContent } from '../utils/parser' import { parseSearchQuery } from '../utils/search' enum ReadFilter { @@ -847,11 +848,30 @@ export const createLibraryItem = async ( return newLibraryItem } -export const saveFeedItemInFollowing = ( +export const saveFeedItemInFollowing = async ( input: SaveFollowingItemRequest, userId: string ) => { const thumbnail = input.thumbnail && createThumbnailUrl(input.thumbnail) + let content: string | undefined + + if (input.previewContent) { + const parsedResult = await parsePreparedContent(input.url, { + document: input.previewContent, + pageInfo: { + title: input.title, + author: input.author, + canonicalUrl: input.url, + contentType: input.previewContentType, + description: input.description, + previewImage: thumbnail, + }, + }) + + if (parsedResult.parsedContent) { + content = parsedResult.parsedContent.content + } + } return authTrx( async (tx) => { @@ -863,6 +883,8 @@ export const saveFeedItemInFollowing = ( folder: InFilter.FOLLOWING, slug: generateSlug(input.title), thumbnail, + readableContent: content, + state: LibraryItemState.ContentNotFetched, } return tx diff --git a/packages/api/src/utils/parser.ts b/packages/api/src/utils/parser.ts index dff855b4f..54373baea 100644 --- a/packages/api/src/utils/parser.ts +++ b/packages/api/src/utils/parser.ts @@ -180,7 +180,7 @@ const getPurifiedContent = (html: string): Document => { const getReadabilityResult = async ( url: string, html: string, - document: Document, + document?: Document, isNewsletter?: boolean ): Promise => { // First attempt to read the article as is.