diff --git a/packages/api/src/resolvers/article/index.ts b/packages/api/src/resolvers/article/index.ts index cc373cbfc..7d3fea678 100644 --- a/packages/api/src/resolvers/article/index.ts +++ b/packages/api/src/resolvers/article/index.ts @@ -415,7 +415,6 @@ export const getArticleResolver = authorized< deletedAt: IsNull(), }, relations: { - labels: true, highlights: { user: true, labels: true, @@ -912,7 +911,7 @@ export const moveToFolderResolver = authorized< MoveToFolderSuccess, MoveToFolderError, MutationMoveToFolderArgs ->(async (_, { id, folder }, { authTrx, pubsub, uid }) => { +>(async (_, { id, folder }, { authTrx, log, pubsub, uid }) => { analytics.track({ userId: uid, event: 'move_to_folder', @@ -945,24 +944,6 @@ export const moveToFolderResolver = authorized< const savedAt = new Date() - // // if the content is not fetched yet, create a page save request - // if (!item.readableContent) { - // const articleSavingRequest = await createPageSaveRequest({ - // userId: uid, - // url: item.originalUrl, - // articleSavingRequestId: id, - // priority: 'high', - // publishedAt: item.publishedAt || undefined, - // savedAt, - // pubsub, - // }) - - // return { - // __typename: 'MoveToFolderSuccess', - // articleSavingRequest, - // } - // } - await updateLibraryItem( item.id, { @@ -973,8 +954,29 @@ export const moveToFolderResolver = authorized< pubsub ) + // if the content is not fetched yet, create a page save request + if (!item.readableContent) { + try { + await createPageSaveRequest({ + userId: uid, + url: item.originalUrl, + articleSavingRequestId: id, + priority: 'high', + publishedAt: item.publishedAt || undefined, + savedAt, + folder, + pubsub, + }) + } catch (error) { + log.error('moveToFolderResolver error', error) + + return { + errorCodes: [MoveToFolderErrorCode.BadRequest], + } + } + } + return { - __typename: 'MoveToFolderSuccess', success: true, } }) diff --git a/packages/api/src/resolvers/function_resolvers.ts b/packages/api/src/resolvers/function_resolvers.ts index 9663d72bc..398ac284c 100644 --- a/packages/api/src/resolvers/function_resolvers.ts +++ b/packages/api/src/resolvers/function_resolvers.ts @@ -319,6 +319,19 @@ export const functionResolvers = { if (article.wordCount) return article.wordCount return article.content ? wordsCount(article.content) : undefined }, + async labels( + article: { id: string; labels?: Label[]; labelNames?: string[] | null }, + _: unknown, + ctx: WithDataSourcesContext + ) { + if (article.labels) return article.labels + + if (article.labelNames && article.labelNames.length > 0) { + return findLabelsByLibraryItemId(article.id, ctx.uid) + } + + return [] + }, }, Highlight: { // async reactions( @@ -518,4 +531,5 @@ export const functionResolvers = { ...resultResolveTypeResolver('UpdateSubscription'), ...resultResolveTypeResolver('UpdateEmail'), ...resultResolveTypeResolver('ScanFeeds'), + ...resultResolveTypeResolver('MoveToFolder'), } diff --git a/packages/api/src/resolvers/newsletters/index.ts b/packages/api/src/resolvers/newsletters/index.ts index e871197f5..8e1e4ec9a 100644 --- a/packages/api/src/resolvers/newsletters/index.ts +++ b/packages/api/src/resolvers/newsletters/index.ts @@ -41,7 +41,7 @@ export const createNewsletterEmailResolver = authorized< const newsletterEmail = await createNewsletterEmail( claims.uid, undefined, - input?.folder || undefined, + input?.folder || 'following', input?.name || undefined, input?.description || undefined ) diff --git a/packages/api/src/resolvers/subscriptions/index.ts b/packages/api/src/resolvers/subscriptions/index.ts index fcb35a169..6489e80c7 100644 --- a/packages/api/src/resolvers/subscriptions/index.ts +++ b/packages/api/src/resolvers/subscriptions/index.ts @@ -241,8 +241,8 @@ export const subscribeResolver = authorized< // limit number of rss subscriptions to max const results = (await getRepository(Subscription).query( - `insert into omnivore.subscriptions (name, url, description, type, user_id, icon, auto_add_to_library, is_private) - select $1, $2, $3, $4, $5, $6, $7, $8, $9, $10 from omnivore.subscriptions + `insert into omnivore.subscriptions (name, url, description, type, user_id, icon, is_private, fetch_content, folder) + select $1, $2, $3, $4, $5, $6, $7, $8, $9 from omnivore.subscriptions where user_id = $5 and type = 'RSS' and status = 'ACTIVE' having count(*) < $10 returning *;`, @@ -254,8 +254,8 @@ export const subscribeResolver = authorized< uid, feed.thumbnail, input.isPrivate, - input.fetchContent, - input.folder, + input.fetchContent ?? true, + input.folder ?? 'following', MAX_RSS_SUBSCRIPTIONS, ] )) as any[] diff --git a/packages/api/src/services/save_email.ts b/packages/api/src/services/save_email.ts index 4a89c44d8..092c2b98f 100644 --- a/packages/api/src/services/save_email.ts +++ b/packages/api/src/services/save_email.ts @@ -34,7 +34,7 @@ export type SaveEmailInput = { unsubHttpUrl?: string newsletterEmailId?: string receivedEmailId: string - folder: string + folder?: string } const isStubUrl = (url: string): boolean => {