From d19a9c38d715140364e931e615c0169bbc4daf43 Mon Sep 17 00:00:00 2001 From: Sivin Varghese <64252451+iamsivin@users.noreply.github.com> Date: Thu, 22 Aug 2024 13:58:51 +0530 Subject: [PATCH] feat: Rewrite `aiMixin` to a composable (#9955) This PR will replace the usage of aiMixin with the useAI composable. Fixes https://linear.app/chatwoot/issue/CW-3443/rewrite-aimixin-mixin-to-a-composable Co-authored-by: Muhsin Keloth Co-authored-by: Shivam Mishra --- .../components/widgets/AIAssistanceButton.vue | 12 +- .../components/widgets/AIAssistanceModal.vue | 13 +- .../components/widgets/AICTAModal.vue | 6 +- .../widgets/conversation/MessagesView.vue | 15 +- .../conversation/LabelSuggestion.vue | 14 +- .../dashboard/composables/spec/useAI.spec.js | 119 ++++++++++ app/javascript/dashboard/composables/useAI.js | 204 ++++++++++++++++++ app/javascript/dashboard/mixins/aiMixin.js | 112 ---------- .../dashboard/mixins/specs/aiMixin.spec.js | 95 -------- .../routes/dashboard/commands/commandbar.vue | 3 + .../dashboard/commands/conversationHotKeys.js | 2 - 11 files changed, 372 insertions(+), 223 deletions(-) create mode 100644 app/javascript/dashboard/composables/spec/useAI.spec.js create mode 100644 app/javascript/dashboard/composables/useAI.js delete mode 100644 app/javascript/dashboard/mixins/aiMixin.js delete mode 100644 app/javascript/dashboard/mixins/specs/aiMixin.spec.js diff --git a/app/javascript/dashboard/components/widgets/AIAssistanceButton.vue b/app/javascript/dashboard/components/widgets/AIAssistanceButton.vue index 6ec852b58..cf11f3bc4 100644 --- a/app/javascript/dashboard/components/widgets/AIAssistanceButton.vue +++ b/app/javascript/dashboard/components/widgets/AIAssistanceButton.vue @@ -4,9 +4,9 @@ import { mapGetters } from 'vuex'; import { useAdmin } from 'dashboard/composables/useAdmin'; import { useUISettings } from 'dashboard/composables/useUISettings'; import { useKeyboardEvents } from 'dashboard/composables/useKeyboardEvents'; +import { useAI } from 'dashboard/composables/useAI'; import AICTAModal from './AICTAModal.vue'; import AIAssistanceModal from './AIAssistanceModal.vue'; -import aiMixin from 'dashboard/mixins/aiMixin'; import { CMD_AI_ASSIST } from 'dashboard/routes/dashboard/commands/commandBarBusEvents'; import AIAssistanceCTAButton from './AIAssistanceCTAButton.vue'; @@ -16,17 +16,18 @@ export default { AICTAModal, AIAssistanceCTAButton, }, - mixins: [aiMixin], setup(props, { emit }) { const { uiSettings, updateUISettings } = useUISettings(); + const { isAIIntegrationEnabled, draftMessage, recordAnalytics } = useAI(); + const { isAdmin } = useAdmin(); const aiAssistanceButtonRef = ref(null); const initialMessage = ref(''); - const initializeMessage = draftMessage => { - initialMessage.value = draftMessage; + const initializeMessage = draftMsg => { + initialMessage.value = draftMsg; }; const keyboardEvents = { '$mod+KeyZ': { @@ -48,6 +49,9 @@ export default { aiAssistanceButtonRef, initialMessage, initializeMessage, + recordAnalytics, + isAIIntegrationEnabled, + draftMessage, }; }, data: () => ({ diff --git a/app/javascript/dashboard/components/widgets/AIAssistanceModal.vue b/app/javascript/dashboard/components/widgets/AIAssistanceModal.vue index 5435407f0..547746131 100644 --- a/app/javascript/dashboard/components/widgets/AIAssistanceModal.vue +++ b/app/javascript/dashboard/components/widgets/AIAssistanceModal.vue @@ -1,20 +1,27 @@