/** * Twilio Service for Client-side Usage * Provides easy-to-use functions for SMS and WhatsApp messaging * Uses Firebase abstraction layer for cross-platform support */ import { httpsCallable } from '../firebase'; // SMS Functions export const sendSMS = async (to: string, message: string, from?: string) => { const sendSMSFunction = httpsCallable('sendSMS'); return await sendSMSFunction({ to, message, from }); }; export const sendBulkSMS = async (recipients: string[], message: string, from?: string) => { const sendBulkSMSFunction = httpsCallable('sendBulkSMS'); return await sendBulkSMSFunction({ recipients, message, from }); }; // WhatsApp Functions export const sendWhatsApp = async (to: string, message: string, from?: string) => { const sendWhatsAppFunction = httpsCallable('sendWhatsApp'); return await sendWhatsAppFunction({ to, message, from }); }; export const sendBulkWhatsApp = async (recipients: string[], message: string, from?: string) => { const sendBulkWhatsAppFunction = httpsCallable('sendBulkWhatsApp'); return await sendBulkWhatsAppFunction({ recipients, message, from }); }; // Utility Functions export const getMessageStatus = async (messageSid: string) => { const getMessageStatusFunction = httpsCallable('getMessageStatus'); return await getMessageStatusFunction({ messageSid }); }; export const getMessageHistory = async (from?: string, to?: string, limit?: number) => { const getMessageHistoryFunction = httpsCallable('getMessageHistory'); return await getMessageHistoryFunction({ from, to, limit }); }; export const validatePhoneNumber = async (phoneNumber: string, countryCode?: string) => { const validatePhoneNumberFunction = httpsCallable('validatePhoneNumber'); return await validatePhoneNumberFunction({ phoneNumber, countryCode }); }; // Helper function to format phone numbers for WhatsApp export const formatWhatsAppNumber = (phoneNumber: string): string => { if (phoneNumber.startsWith("whatsapp:")) { return phoneNumber; } return `whatsapp:${phoneNumber}`; }; // Helper function to format phone numbers for SMS export const formatSMSNumber = (phoneNumber: string): string => { const cleaned = phoneNumber.replace(/\D/g, ""); if (cleaned.length === 10) { return `+1${cleaned}`; } else if (cleaned.length === 11 && cleaned.startsWith("1")) { return `+${cleaned}`; } else if (cleaned.length > 10) { return `+${cleaned}`; } return phoneNumber; };