'use client' import { useEffect, useState } from 'react' import { getSettings, updateSettings } from '@/app/actions' import { toast } from 'sonner' import { Loader2, Save, MessageSquare, MessageCircle, AlertCircle } from 'lucide-react' import { Button } from '@/components/ui/button' import { Input } from '@/components/ui/input' import { Label } from '@/components/ui/label' import { Textarea } from '@/components/ui/textarea' import { Checkbox } from '@/components/ui/checkbox' export default function IntegrationsPage() { const [loading, setLoading] = useState(true) const [saving, setSaving] = useState(false) const [settings, setSettings] = useState({ MATTERMOST_NOTIF_ENABLED: 'false', MATTERMOST_BOT_TOKEN: '', MATTERMOST_API_URL: '', MATTERMOST_WEBHOOK_URL: '', MATTERMOST_TEMPLATE: '', WHATSAPP_TEMPLATE: '', }) useEffect(() => { const fetchSettings = async () => { const data = await getSettings() if (data) { setSettings({ MATTERMOST_NOTIF_ENABLED: data.MATTERMOST_NOTIF_ENABLED || 'false', MATTERMOST_BOT_TOKEN: data.MATTERMOST_BOT_TOKEN || '', MATTERMOST_API_URL: data.MATTERMOST_API_URL || '', MATTERMOST_WEBHOOK_URL: data.MATTERMOST_WEBHOOK_URL || '', MATTERMOST_TEMPLATE: data.MATTERMOST_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}', WHATSAPP_TEMPLATE: data.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}', }) } setLoading(false) } fetchSettings() }, []) const handleChange = (key: string, value: string) => { setSettings((prev) => ({ ...prev, [key]: value })) } const handleSave = async () => { setSaving(true) const res = await updateSettings(settings) if (res.success) { toast.success('Berhasil Disimpan', { description: 'Pengaturan integrasi berhasil disimpan!', duration: 3000, }) } else { toast.error('Gagal', { description: 'Gagal menyimpan pengaturan', duration: 3000, }) } setSaving(false) } if (loading) { return (
) } return (

Integrasi & Sharing

Konfigurasi endpoint API dan template pesan otomatis.

{/* Mattermost Section */}

Konfigurasi Mattermost

Atur integrasi Mattermost. Bagian atas untuk Notifikasi Personal (DM) ke Kreator, sedangkan bagian bawah untuk fitur Share (Broadcast) PO menggunakan Webhook.

handleChange('MATTERMOST_NOTIF_ENABLED', checked ? 'true' : 'false')} />

Kirim notifikasi otomatis ke channel/DM kreator PO tiap ada update pesanan. (Membutuhkan Bot Token).

{settings.MATTERMOST_NOTIF_ENABLED === 'true' && (
handleChange('MATTERMOST_API_URL', e.target.value)} className="h-10 rounded-xl" placeholder="https://mattermost.domain.com/api/v4/posts" />
handleChange('MATTERMOST_BOT_TOKEN', e.target.value)} className="h-10 rounded-xl" placeholder="Masukan Bearer Token" />
)}

Broadcast via Incoming Webhook

handleChange('MATTERMOST_WEBHOOK_URL', e.target.value)} className="h-11 rounded-xl bg-white dark:bg-slate-950" placeholder="https://mattermost.yourdomain.com/hooks/xxx" />