Spaces:
Build error
Build error
| import axios, { AxiosError, AxiosResponse } from "axios"; | |
| export const openHands = axios.create({ | |
| baseURL: `${window.location.protocol}//${import.meta.env.VITE_BACKEND_BASE_URL || window?.location.host}`, | |
| }); | |
| // Helper function to check if a response contains an email verification error | |
| // eslint-disable-next-line @typescript-eslint/no-explicit-any | |
| const checkForEmailVerificationError = (data: any): boolean => { | |
| const EMAIL_NOT_VERIFIED = "EmailNotVerifiedError"; | |
| if (typeof data === "string") { | |
| return data.includes(EMAIL_NOT_VERIFIED); | |
| } | |
| if (typeof data === "object" && data !== null) { | |
| if ("message" in data) { | |
| const { message } = data; | |
| if (typeof message === "string") { | |
| return message.includes(EMAIL_NOT_VERIFIED); | |
| } | |
| if (Array.isArray(message)) { | |
| return message.some( | |
| (msg) => typeof msg === "string" && msg.includes(EMAIL_NOT_VERIFIED), | |
| ); | |
| } | |
| } | |
| // Search any values in object in case message key is different | |
| return Object.values(data).some( | |
| (value) => | |
| (typeof value === "string" && value.includes(EMAIL_NOT_VERIFIED)) || | |
| (Array.isArray(value) && | |
| value.some( | |
| (v) => typeof v === "string" && v.includes(EMAIL_NOT_VERIFIED), | |
| )), | |
| ); | |
| } | |
| return false; | |
| }; | |
| // Set up the global interceptor | |
| openHands.interceptors.response.use( | |
| (response: AxiosResponse) => response, | |
| (error: AxiosError) => { | |
| // Check if it's a 403 error with the email verification message | |
| if ( | |
| error.response?.status === 403 && | |
| checkForEmailVerificationError(error.response?.data) | |
| ) { | |
| if (window.location.pathname !== "/settings/user") { | |
| window.location.reload(); | |
| } | |
| } | |
| // Continue with the error for other error handlers | |
| return Promise.reject(error); | |
| }, | |
| ); | |