From 74cd6395743513d79f5dc8556af6005891f00523 Mon Sep 17 00:00:00 2001 From: Sojan Date: Mon, 5 May 2025 23:50:34 -0700 Subject: [PATCH] chore: voice call campaigns --- .../Campaigns/CampaignCard/CampaignCard.vue | 19 +- .../CampaignCard/VoiceCampaignDetails.vue | 63 ++++++ .../EmptyState/CampaignEmptyStateContent.js | 120 ++++++++++- .../EmptyState/CustomEmptyStateLayout.vue | 55 +++++ .../EmptyState/VoiceCampaignEmptyState.vue | 63 ++++++ .../Pages/CampaignPage/CampaignList.vue | 5 + .../VoiceCampaign/VoiceCampaignDialog.vue | 60 ++++++ .../VoiceCampaign/VoiceCampaignForm.vue | 189 ++++++++++++++++++ .../components/ActionButtons.vue | 12 +- .../components/ComposeNewConversationForm.vue | 8 +- .../helpers/composeConversationHelper.js | 8 +- .../components-next/sidebar/Sidebar.vue | 5 + .../components/widgets/FloatingCallWidget.vue | 16 +- .../dashboard/i18n/locale/en/campaign.json | 80 +++++++- .../dashboard/i18n/locale/en/contact.json | 3 +- .../dashboard/i18n/locale/en/settings.json | 1 + .../dashboard/campaigns/campaigns.routes.js | 7 + .../campaigns/pages/VoiceCampaignsPage.vue | 76 +++++++ .../conversation/contact/ContactInfo.vue | 14 ++ .../dashboard/store/modules/inboxes.js | 6 + app/javascript/shared/constants/campaign.js | 1 + .../contacts/contactable_inboxes_service.rb | 8 + 22 files changed, 803 insertions(+), 16 deletions(-) create mode 100644 app/javascript/dashboard/components-next/Campaigns/CampaignCard/VoiceCampaignDetails.vue create mode 100644 app/javascript/dashboard/components-next/Campaigns/EmptyState/CustomEmptyStateLayout.vue create mode 100644 app/javascript/dashboard/components-next/Campaigns/EmptyState/VoiceCampaignEmptyState.vue create mode 100644 app/javascript/dashboard/components-next/Campaigns/Pages/CampaignPage/VoiceCampaign/VoiceCampaignDialog.vue create mode 100644 app/javascript/dashboard/components-next/Campaigns/Pages/CampaignPage/VoiceCampaign/VoiceCampaignForm.vue create mode 100644 app/javascript/dashboard/routes/dashboard/campaigns/pages/VoiceCampaignsPage.vue diff --git a/app/javascript/dashboard/components-next/Campaigns/CampaignCard/CampaignCard.vue b/app/javascript/dashboard/components-next/Campaigns/CampaignCard/CampaignCard.vue index 304e55347..c95eba8c8 100644 --- a/app/javascript/dashboard/components-next/Campaigns/CampaignCard/CampaignCard.vue +++ b/app/javascript/dashboard/components-next/Campaigns/CampaignCard/CampaignCard.vue @@ -8,6 +8,7 @@ import CardLayout from 'dashboard/components-next/CardLayout.vue'; import Button from 'dashboard/components-next/button/Button.vue'; import LiveChatCampaignDetails from './LiveChatCampaignDetails.vue'; import SMSCampaignDetails from './SMSCampaignDetails.vue'; +import VoiceCampaignDetails from './VoiceCampaignDetails.vue'; const props = defineProps({ title: { @@ -22,6 +23,10 @@ const props = defineProps({ type: Boolean, default: false, }, + isVoiceType: { + type: Boolean, + default: false, + }, isEnabled: { type: Boolean, default: false, @@ -67,6 +72,12 @@ const campaignStatus = computed(() => { ? t('CAMPAIGN.LIVE_CHAT.CARD.STATUS.ENABLED') : t('CAMPAIGN.LIVE_CHAT.CARD.STATUS.DISABLED'); } + + if (props.isVoiceType) { + return props.status === STATUS_COMPLETED + ? t('CAMPAIGN.VOICE.CARD.STATUS.COMPLETED') + : t('CAMPAIGN.VOICE.CARD.STATUS.SCHEDULED'); + } return props.status === STATUS_COMPLETED ? t('CAMPAIGN.SMS.CARD.STATUS.COMPLETED') @@ -108,6 +119,12 @@ const inboxIcon = computed(() => { :inbox-name="inboxName" :inbox-icon="inboxIcon" /> + {