Spaces:
Build error
Build error
| import { QueryCache, MutationCache, QueryClient } from "@tanstack/react-query"; | |
| import i18next from "i18next"; | |
| import { AxiosError } from "axios"; | |
| import { I18nKey } from "./i18n/declaration"; | |
| import { retrieveAxiosErrorMessage } from "./utils/retrieve-axios-error-message"; | |
| import { displayErrorToast } from "./utils/custom-toast-handlers"; | |
| const handle401Error = (error: AxiosError, queryClient: QueryClient) => { | |
| if (error?.response?.status === 401 || error?.status === 401) { | |
| queryClient.invalidateQueries({ queryKey: ["user", "authenticated"] }); | |
| } | |
| }; | |
| const shownErrors = new Set<string>(); | |
| export const queryClient = new QueryClient({ | |
| queryCache: new QueryCache({ | |
| onError: (error, query) => { | |
| const isAuthQuery = | |
| query.queryKey[0] === "user" && query.queryKey[1] === "authenticated"; | |
| if (!isAuthQuery) { | |
| handle401Error(error, queryClient); | |
| } | |
| if (!query.meta?.disableToast) { | |
| const errorMessage = retrieveAxiosErrorMessage(error); | |
| if (!shownErrors.has(errorMessage || "")) { | |
| displayErrorToast(errorMessage || i18next.t(I18nKey.ERROR$GENERIC)); | |
| shownErrors.add(errorMessage); | |
| setTimeout(() => { | |
| shownErrors.delete(errorMessage); | |
| }, 3000); | |
| } | |
| } | |
| }, | |
| }), | |
| mutationCache: new MutationCache({ | |
| onError: (error, _, __, mutation) => { | |
| handle401Error(error, queryClient); | |
| if (!mutation?.meta?.disableToast) { | |
| const message = retrieveAxiosErrorMessage(error); | |
| displayErrorToast(message || i18next.t(I18nKey.ERROR$GENERIC)); | |
| } | |
| }, | |
| }), | |
| }); | |