Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Remplacer les appels à helpers/useGraphQL() par hooks/useGraphQL() #1171

Open
thom4parisot opened this issue Dec 17, 2024 · 1 comment
Open

Comments

@thom4parisot
Copy link
Member

thom4parisot commented Dec 17, 2024

Ça éviterait de passer par des useState() à gogo.

Et deux fonctions avec le même nom, une signature identique mais des comportements différents est destabilisant 😅

@ggrossetie
Copy link
Collaborator

Après investigation, on ne fait pas la même chose.

Actuellement

helpers/useGraphQL

La méthode useGraphQL dans helpers/graphQL.js permet d'obtenir une fonction permettant d’exécuter requête GraphQL:

const runQuery = useGraphQL()
const handleCreate = useCallback(async () => {
  try {
    const result = await runQuery({
      query: createArticle,
      variables: { user: activeUser._id, title, tags: selectedTagIds },
    })
  } catch (err) {
    setToast({
      text: t('article.create.errorNotification', { errMessage: err }),
      type: 'error',
    })
  }
})

helpers/useGraphQL

La méthode useGraphQL dans hooks/graphQL.js se base sur useSWR et permet de récupérer des données:

const { data: userContactsQueryData, mutate: mutateUserContacts } = useGraphQL(
  { query: getContacts, variables: { userId: activeUserId } },
  {
    revalidateIfStale: false, 
    revalidateOnFocus: false,
    revalidateOnReconnect: false,
  }
)

Proposition

Je propose de transformer helpers/useGraphQL afin de retourner un "client" GraphQL et de renommer useGraphQL en useGraphQLClient :

const graphqlClient = useGraphQLClient()
const result = await graphqlClient.query({
  query: createArticle,
  variables: { user: activeUser._id, title, tags: selectedTagIds },
})

Quand à hooks/useGraphQL, je propose de renommer useGraphQL en useFetchData.
Le "client" GraphQL sera utilisé en tant que fetcher par SWR. Cela permettra de garantir qu'on a le même format d'erreur qu'on utilise SWR ou non (et qu'on execute les requêtes/mutations GraphQL de la même manière).

@thom4parisot est-ce que cela te semble cohérent ?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants