UNPKG

kod-temp

Version:

Workano Communications SDK

51 lines (50 loc) 2.68 kB
import ApiRequester from '../utils/api-requester'; import Profile from '../domain/Profile'; import ChatRoom from '../domain/ChatRoom'; import ChatMessage from '../domain/ChatMessage'; // split contact status retrieval to avoid `414 Request-URI Too Large`. const MAX_PRESENCE_FETCHED = 30; export default ((client, baseUrl) => ({ updateState: (contactUuid, state) => client.put(`${baseUrl}/users/${contactUuid}/presences`, { state, }, null, ApiRequester.successResponseParser), updateStatus: (contactUuid, state, status) => { const body = { state, status, }; return client.put(`${baseUrl}/users/${contactUuid}/presences`, body, null, ApiRequester.successResponseParser); }, getState: async (contactUuid) => client.get(`${baseUrl}/users/${contactUuid}/presences`).then((response) => response.state), getContactStatusInfo: async (contactUuid) => client.get(`${baseUrl}/users/${contactUuid}/presences`).then((response) => response), getLineState: async (contactUuid) => client.get(`${baseUrl}/users/${contactUuid}/presences`).then((response) => Profile.getLinesState(response.lines)), async getMultipleLineState(contactUuids) { const body = {}; const uuids = contactUuids || []; if (uuids.length > MAX_PRESENCE_FETCHED) { const requests = uuids.reduce((acc, _, i) => { if (i % MAX_PRESENCE_FETCHED === 0) { acc.push(this.getMultipleLineState(uuids.slice(i, i + MAX_PRESENCE_FETCHED))); } return acc; }, []); const splittedStatuses = await Promise.all(requests); return splittedStatuses.flat(); } if (uuids.length) { body.user_uuid = uuids.join(','); } return client.get(`${baseUrl}/users/presences`, body).then((response) => response.items); }, getUserRooms: async () => client.get(`${baseUrl}/users/me/rooms`).then(ChatRoom.parseMany), createRoom: async (name, users) => client.post(`${baseUrl}/users/me/rooms`, { name, users, }).then(ChatRoom.parse), getRoomMessages: async (roomUuid, params) => { const qs = ApiRequester.getQueryString(params || {}); return client.get(`${baseUrl}/users/me/rooms/${roomUuid}/messages${qs.length ? `?${qs}` : ''}`).then((response) => ChatMessage.parseMany(response)); }, sendRoomMessage: async (roomUuid, message) => client.post(`${baseUrl}/users/me/rooms/${roomUuid}/messages`, message).then(ChatMessage.parse), getMessages: async (options) => client.get(`${baseUrl}/users/me/rooms/messages`, options), }));