allow setting fetchContent and folder when subscribe to a feed
This commit is contained in:
@ -438,6 +438,12 @@ export enum CreateNewsletterEmailErrorCode {
|
||||
Unauthorized = 'UNAUTHORIZED'
|
||||
}
|
||||
|
||||
export type CreateNewsletterEmailInput = {
|
||||
description?: InputMaybe<Scalars['String']>;
|
||||
folder?: InputMaybe<Scalars['String']>;
|
||||
name?: InputMaybe<Scalars['String']>;
|
||||
};
|
||||
|
||||
export type CreateNewsletterEmailResult = CreateNewsletterEmailError | CreateNewsletterEmailSuccess;
|
||||
|
||||
export type CreateNewsletterEmailSuccess = {
|
||||
@ -1415,6 +1421,11 @@ export type MutationCreateLabelArgs = {
|
||||
};
|
||||
|
||||
|
||||
export type MutationCreateNewsletterEmailArgs = {
|
||||
input?: InputMaybe<CreateNewsletterEmailInput>;
|
||||
};
|
||||
|
||||
|
||||
export type MutationDeleteAccountArgs = {
|
||||
userID: Scalars['ID'];
|
||||
};
|
||||
@ -1677,7 +1688,10 @@ export type NewsletterEmail = {
|
||||
address: Scalars['String'];
|
||||
confirmationCode?: Maybe<Scalars['String']>;
|
||||
createdAt: Scalars['Date'];
|
||||
description?: Maybe<Scalars['String']>;
|
||||
folder: Scalars['String'];
|
||||
id: Scalars['ID'];
|
||||
name?: Maybe<Scalars['String']>;
|
||||
subscriptionCount: Scalars['Int'];
|
||||
};
|
||||
|
||||
@ -2752,6 +2766,8 @@ export enum SubscribeErrorCode {
|
||||
|
||||
export type SubscribeInput = {
|
||||
autoAddToLibrary?: InputMaybe<Scalars['Boolean']>;
|
||||
fetchContent?: InputMaybe<Scalars['Boolean']>;
|
||||
folder?: InputMaybe<Scalars['String']>;
|
||||
isPrivate?: InputMaybe<Scalars['Boolean']>;
|
||||
subscriptionType?: InputMaybe<SubscriptionType>;
|
||||
url: Scalars['String'];
|
||||
@ -2770,6 +2786,8 @@ export type Subscription = {
|
||||
count: Scalars['Int'];
|
||||
createdAt: Scalars['Date'];
|
||||
description?: Maybe<Scalars['String']>;
|
||||
fetchContent: Scalars['Boolean'];
|
||||
folder: Scalars['String'];
|
||||
icon?: Maybe<Scalars['String']>;
|
||||
id: Scalars['ID'];
|
||||
isPrivate?: Maybe<Scalars['Boolean']>;
|
||||
@ -3116,6 +3134,8 @@ export enum UpdateSubscriptionErrorCode {
|
||||
export type UpdateSubscriptionInput = {
|
||||
autoAddToLibrary?: InputMaybe<Scalars['Boolean']>;
|
||||
description?: InputMaybe<Scalars['String']>;
|
||||
fetchContent?: InputMaybe<Scalars['Boolean']>;
|
||||
folder?: InputMaybe<Scalars['String']>;
|
||||
id: Scalars['ID'];
|
||||
isPrivate?: InputMaybe<Scalars['Boolean']>;
|
||||
lastFetchedAt?: InputMaybe<Scalars['Date']>;
|
||||
@ -3526,6 +3546,7 @@ export type ResolversTypes = {
|
||||
CreateLabelSuccess: ResolverTypeWrapper<CreateLabelSuccess>;
|
||||
CreateNewsletterEmailError: ResolverTypeWrapper<CreateNewsletterEmailError>;
|
||||
CreateNewsletterEmailErrorCode: CreateNewsletterEmailErrorCode;
|
||||
CreateNewsletterEmailInput: CreateNewsletterEmailInput;
|
||||
CreateNewsletterEmailResult: ResolversTypes['CreateNewsletterEmailError'] | ResolversTypes['CreateNewsletterEmailSuccess'];
|
||||
CreateNewsletterEmailSuccess: ResolverTypeWrapper<CreateNewsletterEmailSuccess>;
|
||||
CreateReactionError: ResolverTypeWrapper<CreateReactionError>;
|
||||
@ -4036,6 +4057,7 @@ export type ResolversParentTypes = {
|
||||
CreateLabelResult: ResolversParentTypes['CreateLabelError'] | ResolversParentTypes['CreateLabelSuccess'];
|
||||
CreateLabelSuccess: CreateLabelSuccess;
|
||||
CreateNewsletterEmailError: CreateNewsletterEmailError;
|
||||
CreateNewsletterEmailInput: CreateNewsletterEmailInput;
|
||||
CreateNewsletterEmailResult: ResolversParentTypes['CreateNewsletterEmailError'] | ResolversParentTypes['CreateNewsletterEmailSuccess'];
|
||||
CreateNewsletterEmailSuccess: CreateNewsletterEmailSuccess;
|
||||
CreateReactionError: CreateReactionError;
|
||||
@ -5345,7 +5367,7 @@ export type MutationResolvers<ContextType = ResolverContext, ParentType extends
|
||||
createGroup?: Resolver<ResolversTypes['CreateGroupResult'], ParentType, ContextType, RequireFields<MutationCreateGroupArgs, 'input'>>;
|
||||
createHighlight?: Resolver<ResolversTypes['CreateHighlightResult'], ParentType, ContextType, RequireFields<MutationCreateHighlightArgs, 'input'>>;
|
||||
createLabel?: Resolver<ResolversTypes['CreateLabelResult'], ParentType, ContextType, RequireFields<MutationCreateLabelArgs, 'input'>>;
|
||||
createNewsletterEmail?: Resolver<ResolversTypes['CreateNewsletterEmailResult'], ParentType, ContextType>;
|
||||
createNewsletterEmail?: Resolver<ResolversTypes['CreateNewsletterEmailResult'], ParentType, ContextType, Partial<MutationCreateNewsletterEmailArgs>>;
|
||||
deleteAccount?: Resolver<ResolversTypes['DeleteAccountResult'], ParentType, ContextType, RequireFields<MutationDeleteAccountArgs, 'userID'>>;
|
||||
deleteFilter?: Resolver<ResolversTypes['DeleteFilterResult'], ParentType, ContextType, RequireFields<MutationDeleteFilterArgs, 'id'>>;
|
||||
deleteHighlight?: Resolver<ResolversTypes['DeleteHighlightResult'], ParentType, ContextType, RequireFields<MutationDeleteHighlightArgs, 'highlightId'>>;
|
||||
@ -5404,7 +5426,10 @@ export type NewsletterEmailResolvers<ContextType = ResolverContext, ParentType e
|
||||
address?: Resolver<ResolversTypes['String'], ParentType, ContextType>;
|
||||
confirmationCode?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
|
||||
createdAt?: Resolver<ResolversTypes['Date'], ParentType, ContextType>;
|
||||
description?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
|
||||
folder?: Resolver<ResolversTypes['String'], ParentType, ContextType>;
|
||||
id?: Resolver<ResolversTypes['ID'], ParentType, ContextType>;
|
||||
name?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
|
||||
subscriptionCount?: Resolver<ResolversTypes['Int'], ParentType, ContextType>;
|
||||
__isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>;
|
||||
};
|
||||
@ -6036,6 +6061,8 @@ export type SubscriptionResolvers<ContextType = ResolverContext, ParentType exte
|
||||
count?: SubscriptionResolver<ResolversTypes['Int'], "count", ParentType, ContextType>;
|
||||
createdAt?: SubscriptionResolver<ResolversTypes['Date'], "createdAt", ParentType, ContextType>;
|
||||
description?: SubscriptionResolver<Maybe<ResolversTypes['String']>, "description", ParentType, ContextType>;
|
||||
fetchContent?: SubscriptionResolver<ResolversTypes['Boolean'], "fetchContent", ParentType, ContextType>;
|
||||
folder?: SubscriptionResolver<ResolversTypes['String'], "folder", ParentType, ContextType>;
|
||||
icon?: SubscriptionResolver<Maybe<ResolversTypes['String']>, "icon", ParentType, ContextType>;
|
||||
id?: SubscriptionResolver<ResolversTypes['ID'], "id", ParentType, ContextType>;
|
||||
isPrivate?: SubscriptionResolver<Maybe<ResolversTypes['Boolean']>, "isPrivate", ParentType, ContextType>;
|
||||
|
||||
@ -383,6 +383,12 @@ enum CreateNewsletterEmailErrorCode {
|
||||
UNAUTHORIZED
|
||||
}
|
||||
|
||||
input CreateNewsletterEmailInput {
|
||||
description: String
|
||||
folder: String
|
||||
name: String
|
||||
}
|
||||
|
||||
union CreateNewsletterEmailResult = CreateNewsletterEmailError | CreateNewsletterEmailSuccess
|
||||
|
||||
type CreateNewsletterEmailSuccess {
|
||||
@ -1182,7 +1188,7 @@ type Mutation {
|
||||
createGroup(input: CreateGroupInput!): CreateGroupResult!
|
||||
createHighlight(input: CreateHighlightInput!): CreateHighlightResult!
|
||||
createLabel(input: CreateLabelInput!): CreateLabelResult!
|
||||
createNewsletterEmail: CreateNewsletterEmailResult!
|
||||
createNewsletterEmail(input: CreateNewsletterEmailInput): CreateNewsletterEmailResult!
|
||||
deleteAccount(userID: ID!): DeleteAccountResult!
|
||||
deleteFilter(id: ID!): DeleteFilterResult!
|
||||
deleteHighlight(highlightId: ID!): DeleteHighlightResult!
|
||||
@ -1241,7 +1247,10 @@ type NewsletterEmail {
|
||||
address: String!
|
||||
confirmationCode: String
|
||||
createdAt: Date!
|
||||
description: String
|
||||
folder: String!
|
||||
id: ID!
|
||||
name: String
|
||||
subscriptionCount: Int!
|
||||
}
|
||||
|
||||
@ -2169,6 +2178,8 @@ enum SubscribeErrorCode {
|
||||
|
||||
input SubscribeInput {
|
||||
autoAddToLibrary: Boolean
|
||||
fetchContent: Boolean
|
||||
folder: String
|
||||
isPrivate: Boolean
|
||||
subscriptionType: SubscriptionType
|
||||
url: String!
|
||||
@ -2185,6 +2196,8 @@ type Subscription {
|
||||
count: Int!
|
||||
createdAt: Date!
|
||||
description: String
|
||||
fetchContent: Boolean!
|
||||
folder: String!
|
||||
icon: String
|
||||
id: ID!
|
||||
isPrivate: Boolean
|
||||
@ -2504,6 +2517,8 @@ enum UpdateSubscriptionErrorCode {
|
||||
input UpdateSubscriptionInput {
|
||||
autoAddToLibrary: Boolean
|
||||
description: String
|
||||
fetchContent: Boolean
|
||||
folder: String
|
||||
id: ID!
|
||||
isPrivate: Boolean
|
||||
lastFetchedAt: Date
|
||||
|
||||
@ -206,6 +206,9 @@ export const subscribeResolver = authorized<
|
||||
// re-subscribe
|
||||
const updatedSubscription = await getRepository(Subscription).save({
|
||||
...existingSubscription,
|
||||
fetchContent: input.fetchContent ?? undefined,
|
||||
folder: input.folder ?? undefined,
|
||||
isPrivate: input.isPrivate,
|
||||
status: SubscriptionStatus.Active,
|
||||
})
|
||||
|
||||
@ -217,7 +220,8 @@ export const subscribeResolver = authorized<
|
||||
scheduledDates: [new Date()], // fetch immediately
|
||||
fetchedDates: [updatedSubscription.lastFetchedAt || null],
|
||||
checksums: [updatedSubscription.lastFetchedChecksum || null],
|
||||
addToLibraryFlags: [!!updatedSubscription.autoAddToLibrary],
|
||||
fetchContents: [updatedSubscription.fetchContent],
|
||||
folders: [updatedSubscription.folder],
|
||||
})
|
||||
|
||||
return {
|
||||
@ -238,19 +242,20 @@ 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 from omnivore.subscriptions
|
||||
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(*) < $9
|
||||
having count(*) < $10
|
||||
returning *;`,
|
||||
[
|
||||
feed.title,
|
||||
feed.url,
|
||||
feed.description || null,
|
||||
feed.description,
|
||||
SubscriptionType.Rss,
|
||||
uid,
|
||||
feed.thumbnail || null,
|
||||
input.autoAddToLibrary ?? null,
|
||||
input.isPrivate ?? null,
|
||||
feed.thumbnail,
|
||||
input.isPrivate,
|
||||
input.fetchContent,
|
||||
input.folder,
|
||||
MAX_RSS_SUBSCRIPTIONS,
|
||||
]
|
||||
)) as any[]
|
||||
@ -272,7 +277,8 @@ export const subscribeResolver = authorized<
|
||||
scheduledDates: [new Date()], // fetch immediately
|
||||
fetchedDates: [null],
|
||||
checksums: [null],
|
||||
addToLibraryFlags: [!!newSubscription.autoAddToLibrary],
|
||||
fetchContents: [newSubscription.fetchContent],
|
||||
folders: [newSubscription.folder],
|
||||
})
|
||||
|
||||
return {
|
||||
|
||||
@ -1254,6 +1254,9 @@ const schema = gql`
|
||||
confirmationCode: String
|
||||
createdAt: Date!
|
||||
subscriptionCount: Int!
|
||||
folder: String!
|
||||
name: String
|
||||
description: String
|
||||
}
|
||||
|
||||
type NewsletterEmailsSuccess {
|
||||
@ -1266,6 +1269,12 @@ const schema = gql`
|
||||
|
||||
union NewsletterEmailsResult = NewsletterEmailsSuccess | NewsletterEmailsError
|
||||
|
||||
input CreateNewsletterEmailInput {
|
||||
name: String
|
||||
description: String
|
||||
folder: String
|
||||
}
|
||||
|
||||
# Mutation: CreateNewsletterEmail
|
||||
enum CreateNewsletterEmailErrorCode {
|
||||
UNAUTHORIZED
|
||||
@ -1674,6 +1683,8 @@ const schema = gql`
|
||||
updatedAt: Date
|
||||
isPrivate: Boolean
|
||||
autoAddToLibrary: Boolean
|
||||
fetchContent: Boolean!
|
||||
folder: String!
|
||||
}
|
||||
|
||||
enum SubscriptionStatus {
|
||||
@ -2577,6 +2588,8 @@ const schema = gql`
|
||||
subscriptionType: SubscriptionType
|
||||
isPrivate: Boolean
|
||||
autoAddToLibrary: Boolean
|
||||
fetchContent: Boolean
|
||||
folder: String
|
||||
}
|
||||
|
||||
input UpdateSubscriptionInput {
|
||||
@ -2589,6 +2602,8 @@ const schema = gql`
|
||||
scheduledAt: Date
|
||||
isPrivate: Boolean
|
||||
autoAddToLibrary: Boolean
|
||||
fetchContent: Boolean
|
||||
folder: String
|
||||
}
|
||||
|
||||
union UpdateSubscriptionResult =
|
||||
@ -2753,7 +2768,9 @@ const schema = gql`
|
||||
# input: UpdateLinkShareInfoInput!
|
||||
# ): UpdateLinkShareInfoResult!
|
||||
setLinkArchived(input: ArchiveLinkInput!): ArchiveLinkResult!
|
||||
createNewsletterEmail: CreateNewsletterEmailResult!
|
||||
createNewsletterEmail(
|
||||
input: CreateNewsletterEmailInput
|
||||
): CreateNewsletterEmailResult!
|
||||
deleteNewsletterEmail(newsletterEmailId: ID!): DeleteNewsletterEmailResult!
|
||||
saveUrl(input: SaveUrlInput!): SaveResult!
|
||||
savePage(input: SavePageInput!): SaveResult!
|
||||
|
||||
@ -625,7 +625,8 @@ export interface RssSubscriptionGroup {
|
||||
fetchedDates: (Date | null)[]
|
||||
scheduledDates: Date[]
|
||||
checksums: (string | null)[]
|
||||
addToLibraryFlags: boolean[]
|
||||
fetchContents: boolean[]
|
||||
folders: string[]
|
||||
}
|
||||
|
||||
export const enqueueRssFeedFetch = async (
|
||||
@ -643,7 +644,8 @@ export const enqueueRssFeedFetch = async (
|
||||
timestamp.getTime()
|
||||
), // unix timestamp in milliseconds
|
||||
userIds: subscriptionGroup.userIds,
|
||||
addToLibraryFlags: subscriptionGroup.addToLibraryFlags,
|
||||
fetchContents: subscriptionGroup.fetchContents,
|
||||
folders: subscriptionGroup.folders,
|
||||
}
|
||||
|
||||
// If there is no Google Cloud Project Id exposed, it means that we are in local environment
|
||||
|
||||
Reference in New Issue
Block a user