import React, { useState } from 'react'; import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; import { Switch } from "@/components/ui/switch"; import { Textarea } from "@/components/ui/textarea"; import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs"; import { MessageSquare, Mail, Send, Copy, Check, ExternalLink, AlertCircle } from 'lucide-react'; import { __ } from '@wordpress/i18n'; import { Button } from "@/components/ui/button"; const AISK_API = (window.AiskSettings?.apiUrl || '/wp-json/aisk/v1').replace(/\/+$/, ''); const WHATSAPP_WEBHOOK_URL = `${AISK_API}/whatsapp-webhook`; // Telegram setWebhook URL, including the secret token the plugin verifies on every webhook call const telegramSetWebhookUrl = (token) => { const webhookUrl = window.AiskSettings?.telegramWebhookUrl || `${AISK_API}/telegram-webhook`; const secret = window.AiskSettings?.telegramWebhookSecret || ''; return `https://api.telegram.org/bot${token}/setWebhook?url=${encodeURIComponent(webhookUrl)}&secret_token=${encodeURIComponent(secret)}`; }; const IntegrationsSettings = ({ settings, updateSettings }) => { const [copiedWhatsapp, setCopiedWhatsapp] = useState(false); const [copiedTelegram, setCopiedTelegram] = useState(false); const [whatsappNumberError, setWhatsappNumberError] = useState(''); // WhatsApp number validation function const validateWhatsappNumber = (number) => { if (!number) { setWhatsappNumberError(''); return true; } const whatsappPattern = /^whatsapp:\+\d{10,15}$/; if (!whatsappPattern.test(number)) { setWhatsappNumberError(__('WhatsApp number must be in format: whatsapp:+1234567890', 'aisk-ai-chat')); return false; } setWhatsappNumberError(''); return true; }; const updateIntegrationSettings = (integration, key, value) => { updateSettings('integrations', integration, { ...settings.integrations[integration], [key]: value }); }; const handleWhatsappNumberChange = (e) => { const value = e.target.value; updateIntegrationSettings('whatsapp', 'phone_number', value); validateWhatsappNumber(value); }; const copyToClipboard = (text, type) => { try { if (navigator.clipboard && navigator.clipboard.writeText) { navigator.clipboard.writeText(text) .then(() => { if (type === 'whatsapp') { setCopiedWhatsapp(true); setTimeout(() => setCopiedWhatsapp(false), 2000); } else if (type === 'telegram') { setCopiedTelegram(true); setTimeout(() => setCopiedTelegram(false), 2000); } }) .catch(err => { console.error('Failed to copy: ', err); fallbackCopyToClipboard(text, type); }); } else { fallbackCopyToClipboard(text, type); } } catch (error) { console.error('Copy failed:', error); fallbackCopyToClipboard(text, type); } }; const fallbackCopyToClipboard = (text, type) => { try { const textArea = document.createElement('textarea'); textArea.value = text; // Make the textarea out of viewport textArea.style.position = 'fixed'; textArea.style.left = '-999999px'; textArea.style.top = '-999999px'; document.body.appendChild(textArea); textArea.focus(); textArea.select(); const successful = document.execCommand('copy'); document.body.removeChild(textArea); if (successful) { if (type === 'whatsapp') { setCopiedWhatsapp(true); setTimeout(() => setCopiedWhatsapp(false), 2000); } else if (type === 'telegram') { setCopiedTelegram(true); setTimeout(() => setCopiedTelegram(false), 2000); } } } catch (err) { console.error('Fallback copy failed:', err); } }; return ( {__('WhatsApp', 'aisk-ai-chat')} {__('Telegram', 'aisk-ai-chat')} {__('Contact Form', 'aisk-ai-chat')} {/* WhatsApp Settings */} {__('WhatsApp Integration', 'aisk-ai-chat')} {__('Configure WhatsApp messaging integration', 'aisk-ai-chat')}

{__('Activate WhatsApp integration', 'aisk-ai-chat')}

updateIntegrationSettings('whatsapp', 'enabled', checked)} />
updateIntegrationSettings('whatsapp', 'account_sid', e.target.value)} type="password" />

{__('Get your SID from', 'aisk-ai-chat')}{" "} Twilio Console

updateIntegrationSettings('whatsapp', 'auth_token', e.target.value)} type="password" />

{__('Get your auth token from', 'aisk-ai-chat')}{" "} Twilio Console

{__('Format: "whatsapp:+1234567890"', 'aisk-ai-chat')}

{whatsappNumberError && (
{whatsappNumberError}
)}