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; };