summaryrefslogtreecommitdiffstats
path: root/src/services/graphql/mutations.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/services/graphql/mutations.ts')
-rw-r--r--src/services/graphql/mutations.ts82
1 files changed, 82 insertions, 0 deletions
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<CreatedComment> => {
+ 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<CreateComment>(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<SendEmail>(mutation, variables);
+ return response.sendEmail;
+};