feat: Add campaigns in web widget (#2227)

* add campaign store(getter, actions and mutations)

* add campaign store module

* add get campaigns api

* add fetch campaign action widget load

* add specs

* code cleanup

* trigger campaig api fixes

* integrate campaign trigger action

* code cleanup

* revert changes

* trigger api fixes

* review fixes

* code beautification

* chore: Fix multiple campaigns being send because of race condition

* chore: rubocop

* chore: Fix specs

* disable campaigns

Co-authored-by: Nithin David Thomas <webofnithin@gmail.com>
Co-authored-by: Sojan <sojan@pepalo.com>
This commit is contained in:
Muhsin Keloth
2021-05-10 13:01:00 +05:30
committed by GitHub
parent db31bfcee4
commit 3fc646f330
15 changed files with 371 additions and 6 deletions

View File

@@ -0,0 +1,23 @@
import endPoints from 'widget/api/endPoints';
import { API } from 'widget/helpers/axios';
const getCampaigns = async websiteToken => {
const urlData = endPoints.getCampaigns(websiteToken);
const result = await API.get(urlData.url, { params: urlData.params });
return result;
};
const triggerCampaign = async ({ campaignId }) => {
const { websiteToken } = window.chatwootWebChannel;
const urlData = endPoints.triggerCampaign(websiteToken, campaignId);
await API.post(
urlData.url,
{ ...urlData.data },
{
params: urlData.params,
}
);
};
export { getCampaigns, triggerCampaign };

View File

@@ -64,6 +64,24 @@ const getAvailableAgents = token => ({
website_token: token,
},
});
const getCampaigns = token => ({
url: '/api/v1/widget/campaigns',
params: {
website_token: token,
},
});
const triggerCampaign = (token, campaignId) => ({
url: '/api/v1/widget/events',
data: {
name: 'campaign.triggered',
event_info: {
campaign_id: campaignId,
},
},
params: {
website_token: token,
},
});
export default {
createConversation,
@@ -72,4 +90,6 @@ export default {
getConversation,
updateMessage,
getAvailableAgents,
getCampaigns,
triggerCampaign,
};