// Copyright 2026 Arctel.net // SPDX-License-Identifier: Apache-2.0 'use client'; import * as React from 'react'; import { useTranslations } from 'next-intl'; import { Loader2 } from 'lucide-react'; import { Button } from '@/components/ui/button'; import { Input } from '@/components/ui/input'; import { Label } from '@/components/ui/label'; import { Dialog, DialogContent, DialogFooter, DialogHeader, DialogTitle, } from '@/components/ui/dialog'; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from '@/components/ui/select'; import { TelegramForm, type TelegramFormValue, } from '../channels/telegram/form'; import { QQForm, type QQFormValue } from '../channels/qq/form'; import type { CreateMessageChannelRequest } from '@/lib/services/message-gateway'; interface AddChannelDialogProps { open: boolean; onOpenChange: (open: boolean) => void; onSubmit: (data: CreateMessageChannelRequest) => void; submitting?: boolean; } export function AddChannelDialog({ open, onOpenChange, onSubmit, submitting, }: AddChannelDialogProps) { const t = useTranslations('admin.messageGateway'); const [name, setName] = React.useState(''); const [type, setType] = React.useState<'telegram' | 'qq' | ''>(''); const [telegram, setTelegram] = React.useState({ bot_token: '', base_url: '', }); const [qq, setQQ] = React.useState({ app_id: '', app_secret: '', portal_host: '', }); React.useEffect(() => { if (!open) { setName(''); setType(''); setTelegram({ bot_token: '', base_url: '' }); setQQ({ app_id: '', app_secret: '', portal_host: '' }); } }, [open]); const canSubmit = name.trim() !== '' && ((type === 'telegram' && telegram.bot_token.trim() !== '') || (type === 'qq' && qq.app_id.trim() !== '' && qq.app_secret.trim() !== '')); const handleSubmit = () => { if (!canSubmit || !type) return; const data: CreateMessageChannelRequest = { name: name.trim(), type, enabled: true, }; if (type === 'telegram') { data.bot_token = telegram.bot_token.trim(); if (telegram.base_url.trim()) data.base_url = telegram.base_url.trim(); } else { data.app_id = qq.app_id.trim(); data.app_secret = qq.app_secret.trim(); if (qq.portal_host.trim()) data.portal_host = qq.portal_host.trim(); } onSubmit(data); }; return ( {t('addChannel')}
setName(e.target.value)} />
{type === 'telegram' ? ( ) : null} {type === 'qq' ? : null}
); }