uchill/front_minimal/src/utils/chat-api.js

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 ?? [];
}