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

Added Error Handler that will throw GraphQL errors #6506

Draft
wants to merge 2 commits into
base: master
Choose a base branch
from

Conversation

sudeepjd
Copy link

@sudeepjd sudeepjd commented Nov 19, 2024

PR Checklist

Please check if your PR fulfills the following requirements:

Bugs / Features

What is the current behavior?

Refine's GraphQL package is loosely based on nestjs-query. However, uses urql under the hood. urql uses 2 different types of error handling mechanisms, an errorExchange in exchanges or response.error on the result. The way refine is built using Tanstack query it is expecting an exception new Error to be thrown in order to be caught and treated as an error. But urql does not do this out of the box, and so refine always treats any error as a success, which impact the notifications provider.

What is the new behavior?

Once the error is received by client from the query or mutation, it passes the response.error to an error handler function that parses the error and throws it as Tanstack Query is expecting so that it is treated as an error and not as a success.

fixes (#6493): [BUG] @refinedev/graphql Error Handling does not work as it should

Notes for reviewers

  • I have added in an error differentiator prefix. [Code], [Network], [GraphQL] so the error can be classified and handled accordingly, this may be a breaking change for anyone on the [Code] who has tightly coupled with the "Operation is required." is required string.
  • Tests have been updated to validate the changes made.
  • Documentation has been updated to add in sections for Handling errors based on the prefixes, managing retries and the Authentication has been updated as it was using the nestjs-query mechanism for a custom fetch instead of using the fetchOptions in urql.
  • Thank you for allowing me to make this fix,

Added in [Code], [Network], [GraphQL] error prefixes to differentiate errors

test(graphql): added in tests to validate graphql changes made

BREAKING CHANGE: use [Code] prefix to denote Code errors thrown.
Copy link

changeset-bot bot commented Nov 19, 2024

🦋 Changeset detected

Latest commit: a3fcc7c

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 1 package
Name Type
@refinedev/graphql Minor

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@sudeepjd
Copy link
Author

sudeepjd commented Nov 19, 2024

Dear Refine Team,

Please check this draft PR and if ok, will submit it through. It only has the required changes for the graphql package, tests and the corresponding documentation updates.

Added in Error Handling, Retry using Errors, and updated the Authentication documentation to use urql
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant