feat: add Mattermost bot integration and user notification configuration settings
This commit is contained in:
@@ -8,11 +8,15 @@ 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: '',
|
||||
@@ -23,6 +27,9 @@ export default function IntegrationsPage() {
|
||||
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 ||
|
||||
@@ -80,14 +87,54 @@ export default function IntegrationsPage() {
|
||||
<div className="space-y-4 rounded-2xl border border-slate-200 bg-slate-50/50 p-5 dark:border-slate-800 dark:bg-slate-900/50">
|
||||
<div className="flex items-center gap-2 font-black text-indigo-600 dark:text-indigo-400">
|
||||
<MessageSquare className="h-5 w-5" />
|
||||
<h3>Mattermost Webhook</h3>
|
||||
<h3>Konfigurasi Mattermost</h3>
|
||||
</div>
|
||||
<p className="text-xs text-slate-500">
|
||||
Gunakan URL Incoming Webhook dari Mattermost untuk mengirim broadcast PO baru secara
|
||||
otomatis.
|
||||
Atur integrasi Mattermost. Bagian atas untuk Notifikasi Personal (DM) ke Kreator, sedangkan bagian bawah untuk fitur Share (Broadcast) PO menggunakan Webhook.
|
||||
</p>
|
||||
|
||||
<div className="space-y-1.5">
|
||||
<div className="flex flex-row items-start space-x-3 space-y-0 rounded-md border border-slate-200 p-4 dark:border-slate-800 bg-white dark:bg-slate-950">
|
||||
<Checkbox
|
||||
id="mattermostNotifEnabled"
|
||||
checked={settings.MATTERMOST_NOTIF_ENABLED === 'true'}
|
||||
onCheckedChange={(checked) => handleChange('MATTERMOST_NOTIF_ENABLED', checked ? 'true' : 'false')}
|
||||
/>
|
||||
<div className="space-y-1 leading-none w-full">
|
||||
<Label htmlFor="mattermostNotifEnabled" className="text-sm font-bold">
|
||||
Aktifkan DM Kreator saat Update Pesanan (Menggunakan Bot API)
|
||||
</Label>
|
||||
<p className="text-xs text-slate-500 mb-3">
|
||||
Kirim notifikasi otomatis ke channel/DM kreator PO tiap ada update pesanan. (Membutuhkan Bot Token).
|
||||
</p>
|
||||
|
||||
{settings.MATTERMOST_NOTIF_ENABLED === 'true' && (
|
||||
<div className="space-y-4 mt-4 pt-4 border-t border-slate-100 dark:border-slate-800">
|
||||
<div className="space-y-1.5">
|
||||
<Label className="text-[11px] font-bold text-slate-700 uppercase">API URL POST</Label>
|
||||
<Input
|
||||
value={settings.MATTERMOST_API_URL}
|
||||
onChange={(e) => handleChange('MATTERMOST_API_URL', e.target.value)}
|
||||
className="h-10 rounded-xl"
|
||||
placeholder="https://mattermost.domain.com/api/v4/posts"
|
||||
/>
|
||||
</div>
|
||||
<div className="space-y-1.5">
|
||||
<Label className="text-[11px] font-bold text-slate-700 uppercase">Bot Bearer Token</Label>
|
||||
<Input
|
||||
type="password"
|
||||
value={settings.MATTERMOST_BOT_TOKEN}
|
||||
onChange={(e) => handleChange('MATTERMOST_BOT_TOKEN', e.target.value)}
|
||||
className="h-10 rounded-xl"
|
||||
placeholder="Masukan Bearer Token"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="space-y-1.5 mt-6 pt-6 border-t border-slate-200 dark:border-slate-800">
|
||||
<h4 className="text-sm font-bold text-slate-800 dark:text-slate-200 mb-3">Broadcast via Incoming Webhook</h4>
|
||||
<Label className="text-xs font-bold text-slate-700 uppercase">Webhook URL</Label>
|
||||
<Input
|
||||
value={settings.MATTERMOST_WEBHOOK_URL}
|
||||
|
||||
Reference in New Issue
Block a user