From fa6adedc42e9c6ec39cc30df16b54900c220b094 Mon Sep 17 00:00:00 2001 From: Armand Philippot Date: Mon, 20 Dec 2021 00:15:20 +0100 Subject: refactor: rewrite types and services I was repeating myself a lot in services. So I rewrited the different functions to improve readability and I extracted some formatting functions to put them in utils. I also rewrited/reorganized some types to keep consistent names. --- src/services/graphql/mutations.ts | 82 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 src/services/graphql/mutations.ts (limited to 'src/services/graphql/mutations.ts') diff --git a/src/services/graphql/mutations.ts b/src/services/graphql/mutations.ts new file mode 100644 index 0000000..c697835 --- /dev/null +++ b/src/services/graphql/mutations.ts @@ -0,0 +1,82 @@ +import { CommentData, CreateComment, CreatedComment } from '@ts/types/comments'; +import { ContactData, SendEmail } from '@ts/types/contact'; +import { gql } from 'graphql-request'; +import { fetchApi } from './api'; + +//============================================================================== +// Comment mutation +//============================================================================== + +export const createComment = async ( + data: CommentData +): Promise => { + const mutation = gql` + mutation CreateComment( + $author: String! + $authorEmail: String! + $authorUrl: String! + $content: String! + $parent: ID! + $commentOn: Int! + $mutationId: String! + ) { + createComment( + input: { + author: $author + authorEmail: $authorEmail + authorUrl: $authorUrl + content: $content + parent: $parent + commentOn: $commentOn + clientMutationId: $mutationId + } + ) { + clientMutationId + success + comment { + approved + } + } + } + `; + + const variables = { ...data }; + const response = await fetchApi(mutation, variables); + + return response.createComment; +}; + +//============================================================================== +// Contact mutation +//============================================================================== + +export const sendMail = async (data: ContactData) => { + const mutation = gql` + mutation SendEmail( + $subject: String! + $body: String! + $replyTo: String! + $mutationId: String! + ) { + sendEmail( + input: { + clientMutationId: $mutationId + body: $body + replyTo: $replyTo + subject: $subject + } + ) { + clientMutationId + message + sent + origin + replyTo + to + } + } + `; + + const variables = { ...data }; + const response = await fetchApi(mutation, variables); + return response.sendEmail; +}; -- cgit v1.2.3