export const INBOX_TYPES = { WEB: 'Channel::WebWidget', FB: 'Channel::FacebookPage', TWITTER: 'Channel::TwitterProfile', TWILIO: 'Channel::TwilioSms', WHATSAPP: 'Channel::Whatsapp', API: 'Channel::Api', EMAIL: 'Channel::Email', TELEGRAM: 'Channel::Telegram', LINE: 'Channel::Line', SMS: 'Channel::Sms', }; const INBOX_ICON_MAP = { [INBOX_TYPES.WEB]: 'i-ri-global', [INBOX_TYPES.FB]: 'i-ri-messenger', [INBOX_TYPES.TWITTER]: 'i-ri-twitter-x', [INBOX_TYPES.WHATSAPP]: 'i-ri-whatsapp', [INBOX_TYPES.API]: 'i-ri-cloudy', [INBOX_TYPES.EMAIL]: 'i-ri-mail', [INBOX_TYPES.TELEGRAM]: 'i-ri-telegram', [INBOX_TYPES.LINE]: 'i-ri-line', }; const DEFAULT_ICON = 'i-ri-chat-1'; export const getInboxSource = (type, phoneNumber, inbox) => { switch (type) { case INBOX_TYPES.WEB: return inbox.website_url || ''; case INBOX_TYPES.TWILIO: case INBOX_TYPES.WHATSAPP: return phoneNumber || ''; case INBOX_TYPES.EMAIL: return inbox.email || ''; default: return ''; } }; export const getReadableInboxByType = (type, phoneNumber) => { switch (type) { case INBOX_TYPES.WEB: return 'livechat'; case INBOX_TYPES.FB: return 'facebook'; case INBOX_TYPES.TWITTER: return 'twitter'; case INBOX_TYPES.TWILIO: return phoneNumber?.startsWith('whatsapp') ? 'whatsapp' : 'sms'; case INBOX_TYPES.WHATSAPP: return 'whatsapp'; case INBOX_TYPES.API: return 'api'; case INBOX_TYPES.EMAIL: return 'email'; case INBOX_TYPES.TELEGRAM: return 'telegram'; case INBOX_TYPES.LINE: return 'line'; default: return 'chat'; } }; export const getInboxClassByType = (type, phoneNumber) => { switch (type) { case INBOX_TYPES.WEB: return 'globe-desktop'; case INBOX_TYPES.FB: return 'brand-facebook'; case INBOX_TYPES.TWITTER: return 'brand-twitter'; case INBOX_TYPES.TWILIO: return phoneNumber?.startsWith('whatsapp') ? 'brand-whatsapp' : 'brand-sms'; case INBOX_TYPES.WHATSAPP: return 'brand-whatsapp'; case INBOX_TYPES.API: return 'cloud'; case INBOX_TYPES.EMAIL: return 'mail'; case INBOX_TYPES.TELEGRAM: return 'brand-telegram'; case INBOX_TYPES.LINE: return 'brand-line'; default: return 'chat'; } }; export const getInboxIconByType = (type, phoneNumber, variant = 'fill') => { // Special case for Twilio (whatsapp and sms) if (type === INBOX_TYPES.TWILIO) { return phoneNumber?.startsWith('whatsapp') ? `i-ri-whatsapp-${variant}` : `i-ri-chat-1-${variant}`; } const baseIcon = INBOX_ICON_MAP[type] ?? DEFAULT_ICON; return `${baseIcon}-${variant}`; }; export const getInboxWarningIconClass = (type, reauthorizationRequired) => { const allowedInboxTypes = [INBOX_TYPES.FB, INBOX_TYPES.EMAIL]; if (allowedInboxTypes.includes(type) && reauthorizationRequired) { return 'warning'; } return ''; };