diff --git a/app/javascript/dashboard/components/widgets/AIAssistanceButton.vue b/app/javascript/dashboard/components/widgets/AIAssistanceButton.vue index 4fb2e8504..ab4047a1e 100644 --- a/app/javascript/dashboard/components/widgets/AIAssistanceButton.vue +++ b/app/javascript/dashboard/components/widgets/AIAssistanceButton.vue @@ -1,41 +1,60 @@ + diff --git a/app/javascript/dashboard/components/widgets/AICTAModal.vue b/app/javascript/dashboard/components/widgets/AICTAModal.vue new file mode 100644 index 000000000..b094c42c8 --- /dev/null +++ b/app/javascript/dashboard/components/widgets/AICTAModal.vue @@ -0,0 +1,108 @@ + + + diff --git a/app/javascript/dashboard/helper/AnalyticsHelper/events.js b/app/javascript/dashboard/helper/AnalyticsHelper/events.js index 266442303..cd39d40ca 100644 --- a/app/javascript/dashboard/helper/AnalyticsHelper/events.js +++ b/app/javascript/dashboard/helper/AnalyticsHelper/events.js @@ -89,6 +89,8 @@ export const OPEN_AI_EVENTS = Object.freeze({ SIMPLIFY: 'OpenAI: Used simplify', APPLY_LABEL_SUGGESTION: 'OpenAI: Apply label from suggestion', DISMISS_LABEL_SUGGESTION: 'OpenAI: Dismiss label suggestions', + ADDED_AI_INTEGRATION_VIA_CTA_BUTTON: + 'OpenAI: Added AI integration via CTA button', DISMISS_AI_SUGGESTION: 'OpenAI: Dismiss AI suggestions', }); diff --git a/app/javascript/dashboard/i18n/locale/en/integrations.json b/app/javascript/dashboard/i18n/locale/en/integrations.json index 2ebc4fd69..addba946c 100644 --- a/app/javascript/dashboard/i18n/locale/en/integrations.json +++ b/app/javascript/dashboard/i18n/locale/en/integrations.json @@ -121,6 +121,18 @@ "CANCEL": "Cancel" } }, + "CTA_MODAL": { + "TITLE": "Integrate with OpenAI", + "DESC": "Bring advanced AI features to your dashboard with OpenAI's GPT models. To begin, enter the API key from your OpenAI account.", + "KEY_PLACEHOLDER": "Enter your OpenAI API key", + "BUTTONS": { + "NEED_HELP": "Need help?", + "DISMISS": "Dismiss", + "FINISH": "Finish Setup" + }, + "DISMISS_MESSAGE": "You can setup OpenAI integration later Whenever you want.", + "SUCCESS_MESSAGE": "OpenAI integration setup successfully" + }, "TITLE": "Improve With AI", "SUMMARY_TITLE": "Summary with AI", "REPLY_TITLE": "Reply suggestion with AI", diff --git a/app/javascript/dashboard/mixins/aiMixin.js b/app/javascript/dashboard/mixins/aiMixin.js index e0488f99d..3a9fc4a75 100644 --- a/app/javascript/dashboard/mixins/aiMixin.js +++ b/app/javascript/dashboard/mixins/aiMixin.js @@ -10,15 +10,19 @@ export default { }, computed: { ...mapGetters({ + uiFlags: 'integrations/getUIFlags', appIntegrations: 'integrations/getAppIntegrations', currentChat: 'getSelectedChat', replyMode: 'draftMessages/getReplyEditorMode', }), isAIIntegrationEnabled() { - return this.appIntegrations.find( + return !!this.appIntegrations.find( integration => integration.id === 'openai' && !!integration.hooks.length ); }, + isFetchingAppIntegrations() { + return this.uiFlags.isFetching; + }, hookId() { return this.appIntegrations.find( integration => integration.id === 'openai' && !!integration.hooks.length diff --git a/app/javascript/dashboard/routes/dashboard/contacts/components/ContactsTable.vue b/app/javascript/dashboard/routes/dashboard/contacts/components/ContactsTable.vue index cf6e92c0f..d2b3c75ce 100644 --- a/app/javascript/dashboard/routes/dashboard/contacts/components/ContactsTable.vue +++ b/app/javascript/dashboard/routes/dashboard/contacts/components/ContactsTable.vue @@ -225,7 +225,7 @@ export default { if (!items.length) return '---'; return ( -
+
{items.map( profile => profiles[profile] && (