mirror of
https://github.com/lingble/chatwoot.git
synced 2025-11-06 05:57:49 +00:00
45 lines
1.3 KiB
JavaScript
45 lines
1.3 KiB
JavaScript
import { computed } from 'vue';
|
|
|
|
export function useChannelIcon(inbox) {
|
|
const channelTypeIconMap = {
|
|
'Channel::Api': 'i-ri-cloudy-fill',
|
|
'Channel::Email': 'i-ri-mail-fill',
|
|
'Channel::FacebookPage': 'i-ri-messenger-fill',
|
|
'Channel::Line': 'i-ri-line-fill',
|
|
'Channel::Sms': 'i-ri-chat-1-fill',
|
|
'Channel::Telegram': 'i-ri-telegram-fill',
|
|
'Channel::TwilioSms': 'i-ri-chat-1-fill',
|
|
'Channel::TwitterProfile': 'i-ri-twitter-x-fill',
|
|
'Channel::WebWidget': 'i-ri-global-fill',
|
|
'Channel::Whatsapp': 'i-ri-whatsapp-fill',
|
|
'Channel::Instagram': 'i-ri-instagram-fill',
|
|
'Channel::Voice': 'i-ri-phone-fill',
|
|
};
|
|
|
|
const providerIconMap = {
|
|
microsoft: 'i-ri-microsoft-fill',
|
|
google: 'i-ri-google-fill',
|
|
};
|
|
|
|
const channelIcon = computed(() => {
|
|
const inboxDetails = inbox.value || inbox;
|
|
const type = inboxDetails.channel_type;
|
|
let icon = channelTypeIconMap[type];
|
|
|
|
if (type === 'Channel::Email' && inboxDetails.provider) {
|
|
if (Object.keys(providerIconMap).includes(inboxDetails.provider)) {
|
|
icon = providerIconMap[inboxDetails.provider];
|
|
}
|
|
}
|
|
|
|
// Special case for Twilio whatsapp
|
|
if (type === 'Channel::TwilioSms' && inboxDetails.medium === 'whatsapp') {
|
|
icon = 'i-ri-whatsapp-fill';
|
|
}
|
|
|
|
return icon ?? 'i-ri-global-fill';
|
|
});
|
|
|
|
return channelIcon;
|
|
}
|