-
-
Notifications
You must be signed in to change notification settings - Fork 2.2k
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
base: master
Are you sure you want to change the base?
Conversation
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.
🦋 Changeset detectedLatest commit: cc9fafd The changes in this PR will be included in the next version bump. This PR includes changesets to release 1 package
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 |
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
Hey @sudeepjd thanks for the PR! I'll make some time to review it tomorrow. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for the PR! LGTM. You can also add the example you previously added, only thing you need to do is to run pnpm install
in the root folder, then it will add your example and its dependencies to pnpm-lock.yaml.
I have now added back in the example/data-provider-graphql and have also updated the documentation on the GraphQL package to point to the new example. However, there are a few edits to the pnpm-lock.yaml file apart from what would normally be added in for the data-provider-graphql example. I am not sure if those are intended to be changed or not. |
Those edits are not problem, although annoying. No worries. |
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.
Also added in a new data-provider-graphql example to use the graphql data provider.
fixes (#6493): [BUG] @refinedev/graphql Error Handling does not work as it should
Notes for reviewers