(store: Store<IReduxState>)
| 175 | } |
| 176 | |
| 177 | export function initAxios(store: Store<IReduxState>) { |
| 178 | axios.defaults.paramsSerializer = (params) => { |
| 179 | return Object.keys(params) |
| 180 | .filter((it) => { |
| 181 | return params.hasOwnProperty(it); |
| 182 | }) |
| 183 | .reduce((pre, curr) => { |
| 184 | if (params[curr] === null || typeof params[curr] === 'undefined') { |
| 185 | return pre; |
| 186 | } |
| 187 | return (pre ? pre + '&' : '') + curr + '=' + encodeURIComponent(params[curr]); |
| 188 | }, ''); |
| 189 | }; |
| 190 | |
| 191 | axios.interceptors.request.use((config) => { |
| 192 | redirectIfUserApplyLogout(); |
| 193 | const customHeaders = window.__initialization_data__.headers; |
| 194 | if (customHeaders && Object.keys(customHeaders).length) { |
| 195 | for (const k in customHeaders) { |
| 196 | config!.headers!.common[k] = customHeaders[k]; |
| 197 | } |
| 198 | } |
| 199 | return config; |
| 200 | }); |
| 201 | |
| 202 | const IGNORE_PATHS = ['/client/info', '/user/me', '/space/link/join', '/org/loadOrSearch', '/field/permission', '/space/features', '/space/info']; |
| 203 | axios.interceptors.response.use((response) => { |
| 204 | if (!response) return response; |
| 205 | if (response.config && response.config.url && IGNORE_PATHS.some((path) => response.config.url?.includes(path))) { |
| 206 | return response; |
| 207 | } |
| 208 | return handleResponse(response.data, response, response?.config?.url); |
| 209 | }); |
| 210 | |
| 211 | if (process.env.NODE_ENV === 'production') { |
| 212 | axios.defaults.headers.common['X-Front-Version'] = getReleaseVersion(); |
| 213 | const spaceId = getSpaceIdFormTemplate(); |
| 214 | if (spaceId) { |
| 215 | axios.defaults.headers.common['X-Space-Id'] = spaceId; |
| 216 | } |
| 217 | } |
| 218 | } |
no test coverage detected