diff options
| author | Armand Philippot <git@armandphilippot.com> | 2022-05-06 18:21:16 +0200 |
|---|---|---|
| committer | Armand Philippot <git@armandphilippot.com> | 2022-05-07 15:54:35 +0200 |
| commit | 339c6957fe92c4ec1809159f09c55201d3794c18 (patch) | |
| tree | 74f1dd407c7871c46db6583f2b44cebbe20f7fdd /src/services/graphql/api.ts | |
| parent | a13022cd4c0a7cf0f00a6db49fad13db22d63dd6 (diff) | |
chore: add a Contact page
Diffstat (limited to 'src/services/graphql/api.ts')
| -rw-r--r-- | src/services/graphql/api.ts | 26 |
1 files changed, 21 insertions, 5 deletions
diff --git a/src/services/graphql/api.ts b/src/services/graphql/api.ts index b0e8d3a..9811d86 100644 --- a/src/services/graphql/api.ts +++ b/src/services/graphql/api.ts @@ -7,6 +7,7 @@ import { totalArticlesQuery, } from './articles.query'; import { commentsQuery } from './comments.query'; +import { sendMailMutation } from './contact.mutation'; import { thematicBySlugQuery, thematicsListQuery, @@ -18,6 +19,8 @@ import { topicsSlugQuery, } from './topics.query'; +export type Mutations = typeof sendMailMutation; + export type Queries = | typeof articlesQuery | typeof articleBySlugQuery @@ -44,6 +47,10 @@ export type CommentsResponse<T> = { comments: T[]; }; +export type SendMailResponse<T> = { + sendEmail: T; +}; + export type ThematicResponse<T> = { thematic: T; }; @@ -85,15 +92,16 @@ export type NodesResponse<T> = { }; export type ResponseMap<T> = { - [articleBySlugQuery]: ArticleResponse<NodesResponse<T>>; + [articleBySlugQuery]: ArticleResponse<T>; [articlesCardQuery]: ArticlesResponse<NodesResponse<T>>; [articlesQuery]: ArticlesResponse<EdgesResponse<T>>; [articlesSlugQuery]: ArticlesResponse<EdgesResponse<T>>; [commentsQuery]: CommentsResponse<NodesResponse<T>>; - [thematicBySlugQuery]: ThematicResponse<NodesResponse<T>>; + [sendMailMutation]: SendMailResponse<T>; + [thematicBySlugQuery]: ThematicResponse<T>; [thematicsListQuery]: ThematicsResponse<EdgesResponse<T>>; [thematicsSlugQuery]: ThematicsResponse<EdgesResponse<T>>; - [topicBySlugQuery]: TopicResponse<NodesResponse<T>>; + [topicBySlugQuery]: TopicResponse<T>; [topicsListQuery]: TopicsResponse<EdgesResponse<T>>; [topicsSlugQuery]: TopicsResponse<EdgesResponse<T>>; [totalArticlesQuery]: ArticlesResponse<T>; @@ -133,12 +141,20 @@ export type ByContentIdVar = { contentId: number; }; +export type sendMailVars = { + body: string; + clientMutationId: string; + replyTo: string; + subject: string; +}; + export type VariablesMap = { [articleBySlugQuery]: BySlugVar; [articlesCardQuery]: EdgesVars; [articlesQuery]: EdgesVars; [articlesSlugQuery]: EdgesVars; [commentsQuery]: ByContentIdVar; + [sendMailMutation]: sendMailVars; [thematicBySlugQuery]: BySlugVar; [thematicsListQuery]: EdgesVars; [thematicsSlugQuery]: EdgesVars; @@ -148,7 +164,7 @@ export type VariablesMap = { [totalArticlesQuery]: null; }; -export type FetchAPIProps<T extends Queries> = { +export type FetchAPIProps<T extends Queries | Mutations> = { /** * A GraphQL API URL. */ @@ -170,7 +186,7 @@ export type FetchAPIProps<T extends Queries> = { * @param {Queries} obj.query - A GraphQL query. * @param {object} [obj.variables] - The query variables. */ -export async function fetchAPI<T, U extends Queries>({ +export async function fetchAPI<T, U extends Queries | Mutations>({ api, query, variables, |
