Spaces:
Sleeping
Sleeping
File size: 2,086 Bytes
4bae792 8c762ac 4bae792 8c762ac 4bae792 8c762ac 12a94f6 57f5158 12a94f6 57f5158 12a94f6 4bae792 8c762ac 4bae792 8c762ac 4bae792 8c762ac 4bae792 8c762ac 4bae792 8c762ac 4bae792 8c762ac 4bae792 8c762ac 4bae792 8c762ac 4c47e22 4bae792 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 | import api from "./api";
export const dmService = {
// === Conversations ===
/** Create or get existing conversation with a user */
createOrGetConversation: (userId) => api.post("/dms", { userId }),
/** Get list of conversations */
getConversations: async (params) => {
console.log("[dmService.getConversations] ➡️ Calling GET /dms with params:", params);
const startTime = performance.now();
const response = await api.get("/dms", { params });
const elapsed = Math.round(performance.now() - startTime);
const conversations = response.data?.data || response.data?.conversations || response.data || [];
console.log(`[dmService.getConversations] ✅ Response in ${elapsed}ms:`, {
status: response.status,
count: conversations.length,
ids: conversations.map((c) => c.id),
names: conversations.map((c) => c.other_user?.display_name || c.other_user?.username || "Unknown"),
raw: response.data,
});
return response;
},
// === Messages ===
/** Get messages in a conversation */
getMessages: (conversationId, params) =>
api.get(`/dms/${conversationId}/messages`, { params }),
/** Send message via REST (fallback when WS unavailable) */
sendMessage: (conversationId, data) =>
api.post(`/dms/${conversationId}/messages`, data),
/** Mark conversation as read */
markAsRead: (conversationId) => api.post(`/dms/${conversationId}/read`),
// === Block ===
blockUser: (userId) => api.post(`/dms/block/${userId}`),
unblockUser: (userId) => api.delete(`/dms/block/${userId}`),
getBlockedUsers: () => api.get("/dms/blocked/list"),
// === User Search ===
searchUsers: (query) => api.get("/users/search", { params: { q: query } }),
getUserProfile: (userId) => api.get(`/users/${userId}`),
// 🆕 Batch status — one call for multiple users (replaces getUserStatus polling)
getUsersStatus: (userIds) => api.post("/users/status", { userIds }),
// ❌ DEPRECATED: Use WebSocket + getUsersStatus instead
// getUserStatus: (userId) => api.get(`/users/${userId}/status`),
};
|