From 3759e106158fb427500f1ce22d3237c416046439 Mon Sep 17 00:00:00 2001 From: Hongbo Wu Date: Tue, 28 Nov 2023 17:44:28 +0800 Subject: [PATCH] fix feed url in pdf file not saved --- packages/api/src/generated/graphql.ts | 3 +++ packages/api/src/generated/schema.graphql | 3 +++ packages/api/src/resolvers/article/index.ts | 16 +++++++++++++++- packages/api/src/schema.ts | 3 +++ .../api/src/services/create_page_save_request.ts | 5 +++++ packages/api/src/services/save_page.ts | 9 ++++----- packages/api/src/utils/createTask.ts | 3 +++ packages/puppeteer-parse/index.js | 5 ++++- 8 files changed, 40 insertions(+), 7 deletions(-) diff --git a/packages/api/src/generated/graphql.ts b/packages/api/src/generated/graphql.ts index c50b7510f..d485da3a2 100644 --- a/packages/api/src/generated/graphql.ts +++ b/packages/api/src/generated/graphql.ts @@ -275,6 +275,9 @@ export type CreateArticleInput = { folder?: InputMaybe; labels?: InputMaybe>; preparedDocument?: InputMaybe; + publishedAt?: InputMaybe; + rssFeedUrl?: InputMaybe; + savedAt?: InputMaybe; skipParsing?: InputMaybe; source?: InputMaybe; state?: InputMaybe; diff --git a/packages/api/src/generated/schema.graphql b/packages/api/src/generated/schema.graphql index 7a426ab80..15cb6e347 100644 --- a/packages/api/src/generated/schema.graphql +++ b/packages/api/src/generated/schema.graphql @@ -232,6 +232,9 @@ input CreateArticleInput { folder: String labels: [CreateLabelInput!] preparedDocument: PreparedDocumentInput + publishedAt: Date + rssFeedUrl: String + savedAt: Date skipParsing: Boolean source: String state: ArticleSavingRequestStatus diff --git a/packages/api/src/resolvers/article/index.ts b/packages/api/src/resolvers/article/index.ts index 49e025502..792ab2399 100644 --- a/packages/api/src/resolvers/article/index.ts +++ b/packages/api/src/resolvers/article/index.ts @@ -138,6 +138,9 @@ export const createArticleResolver = authorized< state, labels: inputLabels, folder, + rssFeedUrl, + savedAt, + publishedAt, }, }, { log, uid, pubsub } @@ -215,9 +218,11 @@ export const createArticleResolver = authorized< readingProgressAnchorIndex: 0, readingProgressPercent: 0, highlights: [], - savedAt: new Date(), + savedAt: savedAt || new Date(), updatedAt: new Date(), folder: '', + publishedAt, + subscription: rssFeedUrl, }, } @@ -252,6 +257,9 @@ export const createArticleResolver = authorized< state: state || undefined, labels: inputLabels || undefined, folder: folder || undefined, + savedAt, + publishedAt, + subscription: rssFeedUrl || undefined, }) return DUMMY_RESPONSE } else if (!skipParsing && preparedDocument?.document) { @@ -274,6 +282,9 @@ export const createArticleResolver = authorized< state: state || undefined, labels: inputLabels || undefined, folder: folder || undefined, + savedAt, + publishedAt, + subscription: rssFeedUrl || undefined, }) return DUMMY_RESPONSE } @@ -294,6 +305,9 @@ export const createArticleResolver = authorized< uploadFileId, state, folder, + publishedAt, + rssFeedUrl, + savedAt, }) log.info('New article saving', { diff --git a/packages/api/src/schema.ts b/packages/api/src/schema.ts index 4078c8652..aba01f9e2 100755 --- a/packages/api/src/schema.ts +++ b/packages/api/src/schema.ts @@ -497,6 +497,9 @@ const schema = gql` state: ArticleSavingRequestStatus labels: [CreateLabelInput!] folder: String + rssFeedUrl: String + savedAt: Date + publishedAt: Date } enum CreateArticleErrorCode { UNABLE_TO_FETCH diff --git a/packages/api/src/services/create_page_save_request.ts b/packages/api/src/services/create_page_save_request.ts index 15d0e60f1..4e1fd6b07 100644 --- a/packages/api/src/services/create_page_save_request.ts +++ b/packages/api/src/services/create_page_save_request.ts @@ -36,6 +36,7 @@ interface PageSaveRequest { savedAt?: Date publishedAt?: Date folder?: string + subscription?: string } const SAVING_CONTENT = 'Your link is being saved...' @@ -91,6 +92,7 @@ export const createPageSaveRequest = async ({ savedAt, publishedAt, folder, + subscription, }: PageSaveRequest): Promise => { try { validateUrl(url) @@ -128,6 +130,8 @@ export const createPageSaveRequest = async ({ state: LibraryItemState.Processing, publishedAt, folder, + subscription, + savedAt, }, userId, pubsub @@ -161,6 +165,7 @@ export const createPageSaveRequest = async ({ savedAt, publishedAt, folder, + rssFeedUrl: subscription, }) return libraryItemToArticleSavingRequest(user, libraryItem) diff --git a/packages/api/src/services/save_page.ts b/packages/api/src/services/save_page.ts index 7b6c65f74..af602eca8 100644 --- a/packages/api/src/services/save_page.ts +++ b/packages/api/src/services/save_page.ts @@ -93,7 +93,7 @@ export const savePage = async ( itemType: parseResult.pageType, originalHtml: parseResult.domContent, canonicalUrl: parseResult.canonicalUrl, - saveTime: input.savedAt ? new Date(input.savedAt) : new Date(), + savedAt: input.savedAt ? new Date(input.savedAt) : new Date(), publishedAt: input.publishedAt ? new Date(input.publishedAt) : undefined, state: input.state || undefined, rssFeedUrl: input.rssFeedUrl, @@ -214,7 +214,7 @@ export const parsedContentToLibraryItem = ({ itemType, uploadFileHash, uploadFileId, - saveTime, + savedAt, publishedAt, state, rssFeedUrl, @@ -233,7 +233,7 @@ export const parsedContentToLibraryItem = ({ canonicalUrl?: string | null uploadFileHash?: string | null uploadFileId?: string | null - saveTime?: Date + savedAt?: Date publishedAt?: Date | null state?: ArticleSavingRequestStatus | null rssFeedUrl?: string | null @@ -268,8 +268,7 @@ export const parsedContentToLibraryItem = ({ state: state ? (state as unknown as LibraryItemState) : LibraryItemState.Succeeded, - createdAt: validatedDate(saveTime), - savedAt: validatedDate(saveTime), + savedAt: validatedDate(savedAt), siteName: parsedContent?.siteName, itemLanguage: parsedContent?.language, siteIcon: parsedContent?.siteIcon, diff --git a/packages/api/src/utils/createTask.ts b/packages/api/src/utils/createTask.ts index a14af990a..cad757348 100644 --- a/packages/api/src/utils/createTask.ts +++ b/packages/api/src/utils/createTask.ts @@ -237,6 +237,7 @@ export const enqueueParseRequest = async ({ savedAt, publishedAt, folder, + rssFeedUrl, }: { url: string userId: string @@ -250,6 +251,7 @@ export const enqueueParseRequest = async ({ savedAt?: Date publishedAt?: Date folder?: string + rssFeedUrl?: string }): Promise => { const { GOOGLE_CLOUD_PROJECT } = process.env const payload = { @@ -263,6 +265,7 @@ export const enqueueParseRequest = async ({ savedAt, publishedAt, folder, + rssFeedUrl, } // If there is no Google Cloud Project Id exposed, it means that we are in local environment diff --git a/packages/puppeteer-parse/index.js b/packages/puppeteer-parse/index.js index 9288b370c..39eeb617d 100644 --- a/packages/puppeteer-parse/index.js +++ b/packages/puppeteer-parse/index.js @@ -415,11 +415,14 @@ async function fetchContent(req, res) { const uploadedPdf = await sendCreateArticleMutation(userId, { url: encodeURI(finalUrl), articleSavingRequestId, - uploadFileId: uploadedFileId, + uploadFileId, state, labels, source, folder, + rssFeedUrl, + savedAt, + publishedAt, }); if (!uploadedPdf) { statusCode = 500;