From 533bae021bf2d0fe73521bae2eab69e4d8ad35be Mon Sep 17 00:00:00 2001 From: Jose Selesan Date: Tue, 22 Sep 2026 15:25:26 -0300 Subject: [PATCH] feat: Share whatsapp message --- apps/web/src/routes/group-detail.tsx | 88 +++++++++++++++++++++------- 1 file changed, 66 insertions(+), 22 deletions(-) diff --git a/apps/web/src/routes/group-detail.tsx b/apps/web/src/routes/group-detail.tsx index b4cba1e..1c062ae 100644 --- a/apps/web/src/routes/group-detail.tsx +++ b/apps/web/src/routes/group-detail.tsx @@ -149,6 +149,29 @@ export function GroupDetailView() { } }; + const handleCopyMessage = async () => { + if (!whatsappMessage) return; + try { + await navigator.clipboard.writeText(whatsappMessage); + toast.success('¡Mensaje copiado al portapapeles!'); + } catch { + toast.error('No se pudo copiar automáticamente. Copia el texto manualmente.'); + } + }; + + const handleOpenWhatsApp = async () => { + if (!whatsappShareUrl) return; + try { + if (whatsappMessage) { + await navigator.clipboard.writeText(whatsappMessage); + toast.success('¡Abriendo WhatsApp! Mensaje copiado al portapapeles.'); + } + } catch { + // Ignorar si clipboard falla + } + window.open(whatsappShareUrl, '_blank', 'noopener,noreferrer'); + }; + const handleQuickSubmit = (e: React.FormEvent) => { e.preventDefault(); if (!firstName.trim() || !phone.trim()) { @@ -249,10 +272,13 @@ export function GroupDetailView() { const validRowsCount = parsedContacts.filter((c) => c.isValid).length; const invalidRowsCount = parsedContacts.length - validRowsCount; - const whatsappShareUrl = group && inviteTokenQuery.data?.inviteUrl - ? `https://wa.me/?text=${encodeURIComponent( - `¡Hola! Te invito a unirte a nuestro grupo "${group.name}". Completa tus datos de inscripción en el siguiente enlace: ${inviteTokenQuery.data.inviteUrl}`, - )}` + const whatsappMessage = + group && inviteTokenQuery.data?.inviteUrl + ? `¡Hola! 👋 Te invito a unirte al grupo *${group.name}*.\n\nCompleta tus datos de inscripción en el siguiente enlace:\n${inviteTokenQuery.data.inviteUrl}` + : ''; + + const whatsappShareUrl = whatsappMessage + ? `https://wa.me/?text=${encodeURIComponent(whatsappMessage)}` : ''; if (groupQuery.isPending) { @@ -498,28 +524,42 @@ export function GroupDetailView() { -
-

Vista previa del mensaje para WhatsApp:

-

- “¡Hola! Te invito a unirte a nuestro grupo {group.name}. Completa tus datos de inscripción en el siguiente enlace: {inviteTokenQuery.data?.inviteUrl}” -

+
+
+

Vista previa del mensaje para WhatsApp:

+ +
+
+ {`¡Hola! 👋 Te invito a unirte al grupo `} + {group.name}. + {'\n\n'} + Completa tus datos de inscripción en el siguiente enlace: + {'\n'} + + {inviteTokenQuery.data?.inviteUrl} + +
- void handleOpenWhatsApp()} + className="w-full sm:flex-1 gap-2 bg-[#25D366] hover:bg-[#1EBE5D] text-white border-0" > - - + + Abrir en WhatsApp +
+ +

+ 💡 Al hacer clic en Abrir en WhatsApp, el mensaje completo se copia automáticamente al portapapeles. Si WhatsApp Web solo carga el enlace, puedes pegarlo directamente con Ctrl+V o Cmd+V. +

)}