useCheckError
useCheckError calls the checkError method from the authProvider under the hood.
If the checkError returns a rejected promise, useCheckError calls the logout method of the authProvider and the app is unauthenticated.
It returns the result of react-query's useMutation.
Data that is resolved from the checkError will be returned as the data in the query result.
Usage
Imagine that we make a payment request which is declined by the API. If error status code is 418, user will be logged out for security reasons.
import { useCheckError } from "@pankod/refine-core";
const { mutate: checkError } = useCheckError();
fetch("http://example.com/payment")
.then(() => console.log("Success"))
.catch((error) => checkError(error));
Any error passed to
mutatefunction will be available in thecheckErrorin theauthProvider.
We have a logic in authProvider's checkError method like below.
const authProvider: AuthProvider = {
...
logout: () => {
...
return Promise.resolve();
},
checkError: (error) => {
const status = error.status;
if (status === 418) {
return Promise.reject();
}
return Promise.resolve();
},
...
};
Redirection after error
We have 2 options to manage redirection after logout process.
If promise returned from
checkErroris rejected with nothing, app will be redirected to/loginroute by default.The promise returned from
checkErrormethod ofauthProvidercan reject with a custom url instead.
const authProvider: AuthProvider = {
...
checkError: () => {
...
return Promise.reject("/custom-url");
}
}
CAUTION
This hook can only be used if the authProvider is provided.