refinedev / refine

A React Framework for building internal tools, admin panels, dashboards & B2B apps with unmatched flexibility.
https://refine.dev
MIT License
28.64k stars 2.24k forks source link

Added in error handling to the GraphQL dataprovider. #6500

Closed sudeepjd closed 1 week ago

sudeepjd commented 1 week ago

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

changeset-bot[bot] commented 1 week ago

🦋 Changeset detected

Latest commit: 0dc7c76efc780ea55ffac6f345ec78bcf9949b93

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 | Patch |

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 commented 1 week ago

Looks like there is a build issue with respect to the pnpm-lock.yaml file on the new example data-provider-graphql that I have added in. But in the repo there is no pnpm-lock.yaml file. I have the following 2 options

  1. If someone can help me how to solve this issue, it would be good.
  2. I can separate out the @refinedev/graphql changes as well as the new example/data-provider-graphql into a separate PRs so atleast the fix to the Error issue that this resolves will go through and the new example/data-provider-graphql example can be figured out separately.

Please let me know how to proceed on this.

Thanks.

sudeepjd commented 1 week ago

Closing this pull request.. Will open individual ones for the update of @refinedev/graphql and the data-provider-graqhql example separately, so that already the bug fix on the errors goes through.

BatuhanW commented 5 days ago

Looks like there is a build issue with respect to the pnpm-lock.yaml file on the new example data-provider-graphql that I have added in. But in the repo there is no pnpm-lock.yaml file. I have the following 2 options

  1. If someone can help me how to solve this issue, it would be good.
  2. I can separate out the @refinedev/graphql changes as well as the new example/data-provider-graphql into a separate PRs so atleast the fix to the Error issue that this resolves will go through and the new example/data-provider-graphql example can be figured out separately.

Please let me know how to proceed on this.

Thanks.

@sudeepjd your example is actually correct. You just need to run pnpm install in the root directory. Since this is a monorepo, we only have lockfile in the root. Once you run it, it will add your example and their dependencies to the pnpm-lock.yaml in the root folder.