diff --git a/packages/api/src/generated/graphql.ts b/packages/api/src/generated/graphql.ts index 1343a034a..cd4b67b31 100644 --- a/packages/api/src/generated/graphql.ts +++ b/packages/api/src/generated/graphql.ts @@ -58,6 +58,13 @@ export type AddPopularReadSuccess = { pageId: Scalars['String']; }; +export enum AllowedReply { + Confirm = 'CONFIRM', + Okay = 'OKAY', + Subscribe = 'SUBSCRIBE', + Yes = 'YES' +} + export type ApiKey = { __typename?: 'ApiKey'; createdAt: Scalars['Date']; @@ -1839,7 +1846,7 @@ export type MutationRecommendHighlightsArgs = { export type MutationReplyToEmailArgs = { recentEmailId: Scalars['ID']; - reply: Scalars['String']; + reply: AllowedReply; }; @@ -2282,6 +2289,8 @@ export type RecentEmail = { from: Scalars['String']; html?: Maybe; id: Scalars['ID']; + reply?: Maybe; + replyTo?: Maybe; subject: Scalars['String']; text: Scalars['String']; to: Scalars['String']; @@ -3931,6 +3940,7 @@ export type ResolversTypes = { AddPopularReadErrorCode: AddPopularReadErrorCode; AddPopularReadResult: ResolversTypes['AddPopularReadError'] | ResolversTypes['AddPopularReadSuccess']; AddPopularReadSuccess: ResolverTypeWrapper; + AllowedReply: AllowedReply; ApiKey: ResolverTypeWrapper; ApiKeysError: ResolverTypeWrapper; ApiKeysErrorCode: ApiKeysErrorCode; @@ -6324,6 +6334,8 @@ export type RecentEmailResolvers; html?: Resolver, ParentType, ContextType>; id?: Resolver; + reply?: Resolver, ParentType, ContextType>; + replyTo?: Resolver, ParentType, ContextType>; subject?: Resolver; text?: Resolver; to?: Resolver; diff --git a/packages/api/src/generated/schema.graphql b/packages/api/src/generated/schema.graphql index 90bd58980..e48fe3cff 100644 --- a/packages/api/src/generated/schema.graphql +++ b/packages/api/src/generated/schema.graphql @@ -37,6 +37,13 @@ type AddPopularReadSuccess { pageId: String! } +enum AllowedReply { + CONFIRM + OKAY + SUBSCRIBE + YES +} + type ApiKey { createdAt: Date! expiresAt: Date! @@ -1454,7 +1461,7 @@ type Mutation { optInFeature(input: OptInFeatureInput!): OptInFeatureResult! recommend(input: RecommendInput!): RecommendResult! recommendHighlights(input: RecommendHighlightsInput!): RecommendHighlightsResult! - replyToEmail(recentEmailId: ID!, reply: String!): ReplyToEmailResult! + replyToEmail(recentEmailId: ID!, reply: AllowedReply!): ReplyToEmailResult! reportItem(input: ReportItemInput!): ReportItemResult! revokeApiKey(id: ID!): RevokeApiKeyResult! saveArticleReadingProgress(input: SaveArticleReadingProgressInput!): SaveArticleReadingProgressResult! @@ -1672,6 +1679,8 @@ type RecentEmail { from: String! html: String id: ID! + reply: String + replyTo: String subject: String! text: String! to: String! diff --git a/packages/api/src/resolvers/recent_emails/index.ts b/packages/api/src/resolvers/recent_emails/index.ts index 30f69e979..84aca707a 100644 --- a/packages/api/src/resolvers/recent_emails/index.ts +++ b/packages/api/src/resolvers/recent_emails/index.ts @@ -127,7 +127,7 @@ export const replyToEmailResolver = authorized< ReplyToEmailSuccess, ReplyToEmailError, MutationReplyToEmailArgs ->(async (_, { recentEmailId }, { uid, log }) => { +>(async (_, { recentEmailId, reply }, { uid, log }) => { const repo = getRepository(ReceivedEmail) const recentEmail = await repo.findOneBy({ id: recentEmailId, @@ -142,8 +142,6 @@ export const replyToEmailResolver = authorized< } } - const reply = 'Okay' - const result = await enqueueSendEmail({ to: recentEmail.replyTo || recentEmail.from, // send to the reply-to address if it exists or the from address subject: 'Re: ' + recentEmail.subject, @@ -151,10 +149,14 @@ export const replyToEmailResolver = authorized< from: recentEmail.to, }) - // update received email reply - await repo.update(recentEmailId, { reply }) + const success = !!result + + if (success) { + // update received email reply + await repo.update(recentEmailId, { reply }) + } return { - success: !!result, + success, } }) diff --git a/packages/api/src/schema.ts b/packages/api/src/schema.ts index 0d1f3d501..acae6f520 100755 --- a/packages/api/src/schema.ts +++ b/packages/api/src/schema.ts @@ -3082,6 +3082,13 @@ const schema = gql` UNAUTHORIZED } + enum AllowedReply { + YES + OKAY + CONFIRM + SUBSCRIBE + } + # Mutations type Mutation { googleLogin(input: GoogleLoginInput!): LoginResult! @@ -3181,7 +3188,7 @@ const schema = gql` contentType: String! ): UploadImportFileResult! markEmailAsItem(recentEmailId: ID!): MarkEmailAsItemResult! - replyToEmail(recentEmailId: ID!, reply: String!): ReplyToEmailResult! + replyToEmail(recentEmailId: ID!, reply: AllowedReply!): ReplyToEmailResult! bulkAction( query: String! action: BulkActionType!