34 lines
1.2 KiB
JavaScript
34 lines
1.2 KiB
JavaScript
import {fetchBaseQuery} from '@reduxjs/toolkit/query/react';
|
||
import {logout} from '../Redux/Slices/authSlice.js';
|
||
import CONFIG from "../Core/сonfig.js";
|
||
|
||
export const baseQuery = fetchBaseQuery({
|
||
baseUrl: CONFIG.BASE_URL,
|
||
prepareHeaders: (headers, {getState, endpoint}) => {
|
||
const token = localStorage.getItem('access_token');
|
||
if (token) {
|
||
headers.set('Authorization', `Bearer ${token}`);
|
||
}
|
||
|
||
if (endpoint === 'uploadAppointmentFile') {
|
||
const mutation = getState()?.api?.mutations?.[Object.keys(getState()?.api?.mutations || {})[0]];
|
||
if (mutation?.body instanceof FormData) {
|
||
headers.delete('Content-Type');
|
||
}
|
||
} else {
|
||
headers.set('Content-Type', 'application/json');
|
||
}
|
||
|
||
return headers;
|
||
},
|
||
});
|
||
|
||
export const baseQueryWithAuth = async (args, api, extraOptions) => {
|
||
const result = await baseQuery(args, api, extraOptions);
|
||
if (result.error && [401, 403].includes(result.error.status)) {
|
||
localStorage.removeItem('access_token');
|
||
api.dispatch(logout());
|
||
window.location.href = '/login';
|
||
}
|
||
return result;
|
||
}; |