From 7fb3e71688f874ab6ca76c24bedc139ed890dc08 Mon Sep 17 00:00:00 2001 From: jorgep <jorgep@verdnatura.es> Date: Fri, 8 Nov 2024 17:41:27 +0100 Subject: [PATCH] feat: refs #6818 fetch url & default channel --- src/components/ui/VnLinkPhone.vue | 36 +++++++++++++++++++++++++------ 1 file changed, 30 insertions(+), 6 deletions(-) diff --git a/src/components/ui/VnLinkPhone.vue b/src/components/ui/VnLinkPhone.vue index a69cb4509a..a7b2d9b77b 100644 --- a/src/components/ui/VnLinkPhone.vue +++ b/src/components/ui/VnLinkPhone.vue @@ -1,18 +1,38 @@ <script setup> -import { useAttrs } from 'vue'; +import { reactive, useAttrs, onBeforeMount, capitalize } from 'vue'; +import axios from 'axios'; const props = defineProps({ phoneNumber: { type: [String, Number], default: null }, - channel: { type: Number, default: 1320 }, + channel: { type: Number, default: null }, }); -const config = { +const config = reactive({ sip: { icon: 'phone', href: `sip:${props.phoneNumber}` }, 'say-simple': { icon: 'help', // 'whatsapp', - href: `https://verdnatura.saysimple.io/start-conversation?customerIdentity=%2B${props.phoneNumber}&channelId=${props.channel}`, + href: null, }, -}; +}); const type = Object.keys(config).find((key) => key in useAttrs()) || 'sip'; + +onBeforeMount(async () => { + let url; + let channel = props.channel; + if (type === 'say-simple') + url = (await axios.get('SaySimpleConfigs/findOne')).data.url; + if (!props.channel) + channel = ( + await axios.get('SaySimpleCountries/findOne', { + params: { + filter: { fields: ['channel'], where: { countryFk: 0 } }, + }, + }) + ).data?.channel; + + config[ + 'say-simple' + ].href = `${url}?customerIdentity=%2B${props.phoneNumber}&channelId=${channel}`; +}); </script> <template> <QBtn @@ -25,5 +45,9 @@ const type = Object.keys(config).find((key) => key in useAttrs()) || 'sip'; padding="none" :href="config[type].href" @click.stop - /> + > + <QTooltip> + {{ capitalize(type).replace('-', '') }} + </QTooltip> + </QBtn> </template>