mirror of
https://github.com/omnivore-app/omnivore.git
synced 2026-03-11 08:54:26 +00:00
Check state in articleSavingRequest
This commit is contained in:
parent
9e3db0e053
commit
bc1ed3f054
3 changed files with 23 additions and 14 deletions
|
|
@ -46,6 +46,7 @@ import { ContentParseError } from '../../utils/errors'
|
|||
import {
|
||||
authorized,
|
||||
generateSlug,
|
||||
isParsingTimeout,
|
||||
pageError,
|
||||
stringToHash,
|
||||
userDataToUser,
|
||||
|
|
@ -102,7 +103,7 @@ const FORCE_PUPPETEER_URLS = [
|
|||
/twitter\.com\/(?:#!\/)?(\w+)\/status(?:es)?\/(\d+)(?:\/.*)?/,
|
||||
/^((?:https?:)?\/\/)?((?:www|m)\.)?((?:youtube\.com|youtu.be))(\/(?:[\w-]+\?v=|embed\/|v\/)?)([\w-]+)(\S+)?$/,
|
||||
]
|
||||
const UNPARSEABLE_CONTENT = 'We were unable to parse this page.'
|
||||
const UNPARSEABLE_CONTENT = '<p>We were unable to parse this page.</p>'
|
||||
|
||||
export type CreateArticlesSuccessPartial = Merge<
|
||||
CreateArticleSuccess,
|
||||
|
|
@ -416,17 +417,8 @@ export const getArticleResolver: ResolverFn<
|
|||
return { errorCodes: [ArticleErrorCode.NotFound] }
|
||||
}
|
||||
|
||||
if (
|
||||
page.state === ArticleSavingRequestStatus.Processing &&
|
||||
new Date(page.savedAt).getTime() < new Date().getTime() - 1000 * 30
|
||||
) {
|
||||
page.content = `<p>${UNPARSEABLE_CONTENT}</p>`
|
||||
page.description = UNPARSEABLE_CONTENT
|
||||
page.state = ArticleSavingRequestStatus.Failed
|
||||
await updatePage(page.id, page, {
|
||||
uid: claims.uid,
|
||||
pubsub,
|
||||
})
|
||||
if (isParsingTimeout(page)) {
|
||||
page.content = UNPARSEABLE_CONTENT
|
||||
}
|
||||
|
||||
return {
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@
|
|||
import {
|
||||
ArticleSavingRequestError,
|
||||
ArticleSavingRequestErrorCode,
|
||||
ArticleSavingRequestStatus,
|
||||
ArticleSavingRequestSuccess,
|
||||
CreateArticleSavingRequestError,
|
||||
CreateArticleSavingRequestErrorCode,
|
||||
|
|
@ -9,7 +10,11 @@ import {
|
|||
MutationCreateArticleSavingRequestArgs,
|
||||
QueryArticleSavingRequestArgs,
|
||||
} from '../../generated/graphql'
|
||||
import { authorized, pageToArticleSavingRequest } from '../../utils/helpers'
|
||||
import {
|
||||
authorized,
|
||||
isParsingTimeout,
|
||||
pageToArticleSavingRequest,
|
||||
} from '../../utils/helpers'
|
||||
import { createPageSaveRequest } from '../../services/create_page_save_request'
|
||||
import { getPageById } from '../../elastic/pages'
|
||||
import { isErrorWithCode } from '../user'
|
||||
|
|
@ -62,8 +67,12 @@ export const articleSavingRequestResolver = authorized<
|
|||
user = await models.user.get(page.userId)
|
||||
// eslint-disable-next-line no-empty
|
||||
} catch (error) {}
|
||||
if (user && page)
|
||||
if (user && page) {
|
||||
if (isParsingTimeout(page)) {
|
||||
page.state = ArticleSavingRequestStatus.Succeeded
|
||||
}
|
||||
return { articleSavingRequest: pageToArticleSavingRequest(user, page) }
|
||||
}
|
||||
|
||||
return { errorCodes: [ArticleSavingRequestErrorCode.NotFound] }
|
||||
})
|
||||
|
|
|
|||
|
|
@ -202,6 +202,14 @@ export const pageToArticleSavingRequest = (
|
|||
updatedAt: page.updatedAt || new Date(),
|
||||
})
|
||||
|
||||
export const isParsingTimeout = (page: Page): boolean => {
|
||||
return (
|
||||
// page processed more than 30 seconds ago
|
||||
page.state === ArticleSavingRequestStatus.Processing &&
|
||||
new Date(page.savedAt).getTime() < new Date().getTime() - 1000 * 30
|
||||
)
|
||||
}
|
||||
|
||||
export const validatedDate = (
|
||||
date: Date | string | undefined
|
||||
): Date | undefined => {
|
||||
|
|
|
|||
Loading…
Reference in a new issue