feat: Refactors API for conversation and messages to support multiple conversations

This commit is contained in:
Nithin David 2021-11-09 18:57:51 +05:30
parent 0c9b682329
commit c42fc65a2d
2 changed files with 91 additions and 0 deletions

View file

@ -0,0 +1,51 @@
import { API } from 'widget/helpers/axios';
const buildUrl = endPoint =>
`/api/v1/widget/${endPoint}${window.location.search}`;
/*
* Refer: https://www.chatwoot.com/developers/api#tag/Conversations-API
*/
export default {
async createWithMessage(content, contact) {
const referrerURL = window.referrerURL || '';
return API.post(buildUrl('conversations'), {
contact: {
name: contact.fullName,
email: contact.emailAddress,
},
message: {
content,
timestamp: new Date().toString(),
referer_url: referrerURL,
},
});
},
async get() {
return API.get(buildUrl('conversations'));
},
async toggleTypingIn({ typingStatus, conversationId }) {
return API.post(buildUrl(`conversations/${conversationId}/toggle_typing`), {
typing_status: typingStatus,
});
},
async setUserLastSeenIn({ lastSeen, conversationId }) {
return API.post(
buildUrl(`conversations/${conversationId}/update_last_seen`),
{
contact_last_seen_at: lastSeen,
}
);
},
async sendEmailTranscriptIn({ email, conversationId }) {
return API.post(buildUrl(`conversations/${conversationId}/transcript`), {
email,
});
},
};

View file

@ -0,0 +1,40 @@
import { API } from 'widget/helpers/axios';
const buildUrl = endPoint =>
`/api/v1/widget/${endPoint}${window.location.search}`;
/*
* Refer: https://www.chatwoot.com/developers/api#tag/Messages-API
*/
export default {
create(conversationId, content, echoId) {
return API.post(buildUrl(`conversations/${conversationId}/messages`), {
content,
echo_id: echoId,
});
},
createAttachment(conversationId, attachmentParams) {
return API.post(
buildUrl(`conversations/${conversationId}/messages`),
attachmentParams
);
},
get(conversationId, beforeId) {
return API.get(buildUrl(`conversations/${conversationId}/messages`), {
params: { before: beforeId },
});
},
update(conversationId, messageObject) {
const { id: messageId } = messageObject;
return API.patch(
buildUrl(`conversations/${conversationId}/messages/${messageId}`),
{
...messageObject,
}
);
},
};