'use client' import { useState } from 'react' import { Button } from '@/components/ui/button' import { Dialog, DialogContent, DialogTitle, DialogTrigger } from '@/components/ui/dialog' import { Share2, Check, Copy, MessageCircle, MessageSquare, Loader2 } from 'lucide-react' import { cn } from '@/lib/utils' import { broadcastToMattermost, getSettings } from '@/app/actions' import { toast } from 'sonner' interface ShareButtonProps { orderId: string orderTitle?: string className?: string variant?: 'link' | 'default' | 'destructive' | 'outline' | 'secondary' | 'ghost' size?: 'default' | 'sm' | 'lg' | 'icon' showText?: boolean } export function ShareButton({ orderId, orderTitle = 'Pesanan', className, variant = 'outline', size = 'sm', showText = true, }: ShareButtonProps) { const [copied, setCopied] = useState(false) const [open, setOpen] = useState(false) const [broadcasting, setBroadcasting] = useState(false) const handleCopyLink = () => { const url = `${window.location.origin}/order/${orderId}` navigator.clipboard.writeText(url) setCopied(true) setTimeout(() => setCopied(false), 2000) } const handleShareWA = async () => { const settings = await getSettings() let template = settings.WHATSAPP_TEMPLATE || 'Halo tim! Lagi ada orderan open nih untuk {title}. Mumpung belum di-checkout, yang mau ikutan nitip bisa langsung cek ke sini ya: {url}' const url = `${window.location.origin}/order/${orderId}` const text = template.replace('{title}', orderTitle).replace('{url}', url) window.open(`https://api.whatsapp.com/send?text=${encodeURIComponent(text)}`, '_blank') } const handleBroadcastMattermost = async () => { setBroadcasting(true) const url = `${window.location.origin}/order/${orderId}` const res = await broadcastToMattermost(orderId, url) if (res.success) { toast.success('Broadcast Terkirim!', { description: 'Berhasil mengirim pesan ke Mattermost.', duration: 3000, }) setOpen(false) } else { toast.error('Gagal Broadcast', { description: res.error || 'Terjadi kesalahan saat mengirim.', duration: 3000, }) } setBroadcasting(false) } return ( <> setOpen(true)} > {showText && Bagikan} Bagikan Pesanan Pilih metode untuk membagikan PO ini ke teman atau tim Anda. {copied ? ( ) : ( )} {copied ? 'Tautan Disalin!' : 'Salin Tautan'} Kirim ke WhatsApp {broadcasting ? ( ) : ( )} {broadcasting ? 'Mengirim...' : 'Broadcast ke Mattermost'} > ) }
Pilih metode untuk membagikan PO ini ke teman atau tim Anda.