|
|
import axios from 'axios';
|
|
|
|
|
|
const API_URL = process.env.REACT_APP_API_URL || 'http://localhost:5000/api';
|
|
|
|
|
|
export const api = axios.create({
|
|
|
baseURL: API_URL,
|
|
|
timeout: 10000,
|
|
|
headers: {
|
|
|
'Content-Type': 'application/json',
|
|
|
},
|
|
|
});
|
|
|
|
|
|
|
|
|
api.interceptors.request.use(
|
|
|
(config) => {
|
|
|
const token = localStorage.getItem('token');
|
|
|
if (token) {
|
|
|
config.headers.Authorization = `Bearer ${token}`;
|
|
|
}
|
|
|
return config;
|
|
|
},
|
|
|
(error) => {
|
|
|
return Promise.reject(error);
|
|
|
}
|
|
|
);
|
|
|
|
|
|
|
|
|
api.interceptors.response.use(
|
|
|
(response) => {
|
|
|
return response;
|
|
|
},
|
|
|
(error) => {
|
|
|
if (error.response?.status === 401) {
|
|
|
localStorage.removeItem('token');
|
|
|
window.location.href = '/login';
|
|
|
}
|
|
|
return Promise.reject(error);
|
|
|
}
|
|
|
);
|
|
|
|
|
|
|
|
|
export const authAPI = {
|
|
|
login: (email, password) => api.post('/auth/login', { email, password }),
|
|
|
register: (username, email, password) => api.post('/auth/register', { username, email, password }),
|
|
|
getMe: () => api.get('/auth/me'),
|
|
|
updateProfile: (updates) => api.put('/auth/profile', updates),
|
|
|
};
|
|
|
|
|
|
export const conversationAPI = {
|
|
|
getConversations: (params = {}) => api.get('/conversations', { params }),
|
|
|
getConversation: (id) => api.get(`/conversations/${id}`),
|
|
|
createConversation: (title) => api.post('/conversations', { title }),
|
|
|
updateConversation: (id, updates) => api.put(`/conversations/${id}`, updates),
|
|
|
deleteConversation: (id) => api.delete(`/conversations/${id}`),
|
|
|
};
|
|
|
|
|
|
export const chatAPI = {
|
|
|
sendMessage: (conversationId, content) => api.post('/chat/message', { conversationId, content }),
|
|
|
getMessages: (conversationId, params = {}) => api.get(`/chat/messages/${conversationId}`, { params }),
|
|
|
deleteMessage: (messageId) => api.delete(`/chat/message/${messageId}`),
|
|
|
}; |