84 lines
2.3 KiB
TypeScript
84 lines
2.3 KiB
TypeScript
import type { AxiosRequestConfig } from 'axios';
|
|
import axios from 'axios';
|
|
import { CONFIG } from 'src/global-config';
|
|
|
|
// ----------------------------------------------------------------------
|
|
|
|
const axiosInstance = axios.create({ baseURL: CONFIG.serverUrl });
|
|
|
|
axiosInstance.interceptors.response.use(
|
|
(response) => response,
|
|
(error) => Promise.reject((error.response && error.response.data) || 'Something went wrong!')
|
|
);
|
|
|
|
export default axiosInstance;
|
|
|
|
// ----------------------------------------------------------------------
|
|
|
|
export const fetcher = async (args: string | [string, AxiosRequestConfig]) => {
|
|
try {
|
|
const [url, config] = Array.isArray(args) ? args : [args];
|
|
|
|
const res = await axiosInstance.get(url, { ...config });
|
|
|
|
return res.data;
|
|
} catch (error) {
|
|
console.error('Failed to fetch:', error);
|
|
throw error;
|
|
}
|
|
};
|
|
|
|
// ----------------------------------------------------------------------
|
|
|
|
export const endpoints = {
|
|
chat: '/api/chat',
|
|
kanban: '/api/kanban',
|
|
calendar: '/api/calendar',
|
|
auth: {
|
|
me: '/api/auth/me',
|
|
signIn: '/api/auth/sign-in',
|
|
signUp: '/api/auth/sign-up',
|
|
},
|
|
mail: {
|
|
list: '/api/mail/list',
|
|
details: '/api/mail/details',
|
|
labels: '/api/mail/labels',
|
|
},
|
|
post: {
|
|
list: '/api/post/list',
|
|
details: '/api/post/details',
|
|
latest: '/api/post/latest',
|
|
search: '/api/post/search',
|
|
},
|
|
product: {
|
|
list: '/api/product/list',
|
|
details: '/api/product/details',
|
|
search: '/api/product/search',
|
|
},
|
|
user: {
|
|
list: '/api/user/list',
|
|
profile: '/api/user/profile',
|
|
update: '/api/user/update',
|
|
settings: '/api/user/settings',
|
|
details: '/api/user/details',
|
|
},
|
|
order: {
|
|
list: '/api/order/list',
|
|
profile: '/api/order/profile',
|
|
update: '/api/order/update',
|
|
settings: '/api/order/settings',
|
|
details: '/api/order/details',
|
|
changeStatus: (orderId: string) => `/api/order/changeStatus?orderId=${orderId}`,
|
|
},
|
|
invoice: {
|
|
list: '/api/invoice/list',
|
|
profile: '/api/invoice/profile',
|
|
update: '/api/invoice/update',
|
|
saveInvoice: (invoiceId: string) => `/api/invoice/saveInvoice?invoiceId=${invoiceId}`,
|
|
settings: '/api/invoice/settings',
|
|
details: '/api/invoice/details',
|
|
changeStatus: (invoiceId: string) => `/api/invoice/changeStatus?invoiceId=${invoiceId}`,
|
|
search: '/api/invoice/search',
|
|
},
|
|
};
|