From 5d91bb4ffceafad0c2699d6c0bf5fd607fc19c72 Mon Sep 17 00:00:00 2001 From: Fayaz Ahmed Date: Wed, 21 Aug 2024 09:20:26 +0530 Subject: [PATCH] chore: Repalce Hook Mixin with useHook composable [CW-3454] --- .../integrations/IntegrationHooks.vue | 8 ++++-- .../integrations/MultipleIntegrationHooks.vue | 7 +++-- .../settings/integrations/NewHook.vue | 7 +++-- .../integrations/SingleIntegrationHooks.vue | 7 +++-- .../settings/integrations/useHook.js | 26 +++++++++++++++++++ 5 files changed, 47 insertions(+), 8 deletions(-) create mode 100644 app/javascript/dashboard/routes/dashboard/settings/integrations/useHook.js diff --git a/app/javascript/dashboard/routes/dashboard/settings/integrations/IntegrationHooks.vue b/app/javascript/dashboard/routes/dashboard/settings/integrations/IntegrationHooks.vue index ad2daa5f3..a0185498b 100644 --- a/app/javascript/dashboard/routes/dashboard/settings/integrations/IntegrationHooks.vue +++ b/app/javascript/dashboard/routes/dashboard/settings/integrations/IntegrationHooks.vue @@ -2,7 +2,7 @@ import { isEmptyObject } from '../../../../helper/commons'; import { mapGetters } from 'vuex'; import { useAlert } from 'dashboard/composables'; -import hookMixin from './hookMixin'; +import { useHook } from './useHook'; import NewHook from './NewHook.vue'; import SingleIntegrationHooks from './SingleIntegrationHooks.vue'; import MultipleIntegrationHooks from './MultipleIntegrationHooks.vue'; @@ -13,13 +13,17 @@ export default { SingleIntegrationHooks, MultipleIntegrationHooks, }, - mixins: [hookMixin], props: { integrationId: { type: [String, Number], required: true, }, }, + setup(props) { + const { integrationId } = props; + const { isHookTypeInbox } = useHook(integrationId); + return { isHookTypeInbox }; + }, data() { return { loading: {}, diff --git a/app/javascript/dashboard/routes/dashboard/settings/integrations/MultipleIntegrationHooks.vue b/app/javascript/dashboard/routes/dashboard/settings/integrations/MultipleIntegrationHooks.vue index 38deab634..51aa8190f 100644 --- a/app/javascript/dashboard/routes/dashboard/settings/integrations/MultipleIntegrationHooks.vue +++ b/app/javascript/dashboard/routes/dashboard/settings/integrations/MultipleIntegrationHooks.vue @@ -1,14 +1,17 @@ diff --git a/app/javascript/dashboard/routes/dashboard/settings/integrations/useHook.js b/app/javascript/dashboard/routes/dashboard/settings/integrations/useHook.js new file mode 100644 index 000000000..c813d5fb0 --- /dev/null +++ b/app/javascript/dashboard/routes/dashboard/settings/integrations/useHook.js @@ -0,0 +1,26 @@ +import { computed, ref } from 'vue'; +import { useStore } from 'dashboard/composables/store'; + +export const useHook = (integrationObj, integrationId) => { + const store = useStore(); + const integration = ref(null); + if (integrationId) { + integration.value = + store.getters['integrations/getIntegration'](integrationId); + } else { + integration.value = integrationObj; + } + + const isHookTypeInbox = computed(() => { + return integration.value.hook_type === 'inbox'; + }); + + const hasConnectedHooks = computed(() => { + return !!integration.value.hooks.length; + }); + + return { + isHookTypeInbox, + hasConnectedHooks, + }; +};