61 lines
1.9 KiB
JavaScript
61 lines
1.9 KiB
JavaScript
import axios from 'src/utils/axios';
|
|
|
|
// ----------------------------------------------------------------------
|
|
|
|
export async function getConversations(params) {
|
|
const res = await axios.get('/chat/chats/', { params });
|
|
const {data} = res;
|
|
if (Array.isArray(data)) return { count: data.length, next: null, previous: null, results: data };
|
|
return {
|
|
count: data?.count ?? (data?.results?.length ?? 0),
|
|
next: data?.next ?? null,
|
|
previous: data?.previous ?? null,
|
|
results: data?.results ?? [],
|
|
};
|
|
}
|
|
|
|
export async function getChatById(uuid) {
|
|
const res = await axios.get(`/chat/chats/${uuid}/`);
|
|
return res.data;
|
|
}
|
|
|
|
export async function createChat(participantId) {
|
|
const res = await axios.post('/chat/chats/', { participants: [participantId] });
|
|
return res.data;
|
|
}
|
|
|
|
export async function getChatMessagesByUuid(chatUuid, params) {
|
|
const res = await axios.get(`/chat/chats/${chatUuid}/messages/`, { params });
|
|
return res.data;
|
|
}
|
|
|
|
export async function getMessages(chatId, params) {
|
|
const res = await axios.get('/chat/messages/', { params: { ...params, chat: chatId } });
|
|
return res.data;
|
|
}
|
|
|
|
export async function sendMessage(chatId, content, file) {
|
|
const formData = new FormData();
|
|
formData.append('chat', String(chatId));
|
|
formData.append('content', content);
|
|
if (file) formData.append('file', file);
|
|
const res = await axios.post('/chat/messages/', formData);
|
|
const {data} = res;
|
|
if (data && typeof data === 'object' && 'data' in data) return data.data;
|
|
return data;
|
|
}
|
|
|
|
export async function markMessagesAsRead(chatUuid, messageUuids) {
|
|
await axios.post(
|
|
`/chat/chats/${chatUuid}/mark_read/`,
|
|
messageUuids ? { message_uuids: messageUuids } : {}
|
|
);
|
|
}
|
|
|
|
export async function searchUsers(query) {
|
|
const res = await axios.get('/users/search/', { params: { q: query } });
|
|
const {data} = res;
|
|
if (Array.isArray(data)) return data;
|
|
return data?.results ?? [];
|
|
}
|