Spaces:
Sleeping
Sleeping
File size: 3,032 Bytes
4bae792 1835767 ed21910 1835767 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 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 | import api from "./api";
export const messageService = {
// Get messages in a room
getMessages: (roomId, params) =>
api.get(`/rooms/${roomId}/messages`, { params }),
// Send message
sendMessage: (roomId, data) => api.post(`/rooms/${roomId}/messages`, data),
// Update message
updateMessage: (roomId, messageId, data) =>
api.patch(`/rooms/${roomId}/messages/${messageId}`, data),
// Delete message
deleteMessage: (roomId, messageId) =>
api.delete(`/rooms/${roomId}/messages/${messageId}`),
// Add reaction
addReaction: (roomId, messageId, emoji) =>
api.post(`/rooms/${roomId}/messages/${messageId}/reactions`, { emoji }),
// Remove reaction
removeReaction: (roomId, messageId, emoji) =>
api.delete(`/rooms/${roomId}/messages/${messageId}/reactions/${emoji}`),
// Reply to message
reply: (roomId, data) => api.post(`/rooms/${roomId}/messages/reply`, data),
// Upload file/attachment with message
uploadFile: (roomId, file) => {
const formData = new FormData();
formData.append("file", file);
return api.post(`/rooms/${roomId}/messages/upload`, formData, {
headers: { "Content-Type": "multipart/form-data" },
});
},
// Upload file to storage and get back URL (POST /files)
uploadFileToStorage: (file, options = {}) => {
const formData = new FormData();
formData.append("file", file);
if (options.roomId) formData.append("roomId", options.roomId);
// Don't set Content-Type manually — let axios set it with the correct boundary for multipart
return api.post("/files", formData);
},
// Pin a message
pinMessage: (roomId, messageId) =>
api.post(`/rooms/${roomId}/messages/${messageId}/pin`),
// Unpin a message
unpinMessage: (roomId, messageId) =>
api.delete(`/rooms/${roomId}/messages/${messageId}/pin`),
// Get pinned messages
getPinnedMessages: (roomId) => api.get(`/rooms/${roomId}/messages/pinned`),
// Mark messages as read
markAsRead: (roomId) => api.post(`/rooms/${roomId}/messages/read`),
// Get unread message count
getUnreadCount: (roomId) => api.get(`/rooms/${roomId}/messages/unread-count`),
// Get message by ID
getById: (roomId, messageId) =>
api.get(`/rooms/${roomId}/messages/${messageId}`),
// Forward message to another room
forwardMessage: (roomId, messageId, targetRoomId) =>
api.post(`/rooms/${roomId}/messages/${messageId}/forward`, {
targetRoomId,
}),
// Get message thread/replies
getThread: (roomId, messageId, params) =>
api.get(`/rooms/${roomId}/messages/${messageId}/thread`, { params }),
// Send message with thread reply
sendThreadReply: (roomId, messageId, data) =>
api.post(`/rooms/${roomId}/messages/${messageId}/thread`, data),
// Search messages in a room
search: (roomId, query) =>
api.get(`/rooms/${roomId}/messages/search`, { params: { q: query } }),
// Get message history (for infinite scroll)
getHistory: (roomId, params) =>
api.get(`/rooms/${roomId}/messages/history`, { params }),
};
|