import React, { useState } from 'react' import { Button } from '@/components/ui/button' import { Input } from '@/components/ui/input' import { Label } from '@/components/ui/label' import { Switch } from '@/components/ui/switch' import { Plus, Trash2 } from 'lucide-react' import type { MaimMessageConfig } from '../types' interface MaimMessageSectionProps { config: MaimMessageConfig onChange: (config: MaimMessageConfig) => void } export const MaimMessageSection = React.memo(function MaimMessageSection({ config, onChange }: MaimMessageSectionProps) { const [newToken, setNewToken] = useState('') const [newApiKey, setNewApiKey] = useState('') const addToken = () => { if (newToken && !config.auth_token.includes(newToken)) { onChange({ ...config, auth_token: [...config.auth_token, newToken] }) setNewToken('') } } const removeToken = (index: number) => { onChange({ ...config, auth_token: config.auth_token.filter((_, i) => i !== index), }) } const addApiKey = () => { if (newApiKey && !config.api_server_allowed_api_keys.includes(newApiKey)) { onChange({ ...config, api_server_allowed_api_keys: [...config.api_server_allowed_api_keys, newApiKey] }) setNewApiKey('') } } const removeApiKey = (index: number) => { onChange({ ...config, api_server_allowed_api_keys: config.api_server_allowed_api_keys.filter((_, i) => i !== index), }) } return (
{/* 认证令牌 */}

旧版 API 认证令牌

用于旧版 API 验证,为空则不启用验证

setNewToken(e.target.value)} placeholder="输入认证令牌" onKeyDown={(e) => { if (e.key === 'Enter') { e.preventDefault() addToken() } }} />
{config.auth_token.map((token, index) => (
{token}
))}
{/* 新版 API Server */}

新版 API Server 配置

是否启用额外的新版 API Server(额外监听端口)

onChange({ ...config, enable_api_server: checked })} />
{config.enable_api_server && ( <>
onChange({ ...config, api_server_host: e.target.value })} placeholder="0.0.0.0" />
onChange({ ...config, api_server_port: parseInt(e.target.value) })} placeholder="8090" />
onChange({ ...config, api_server_use_wss: checked })} />
{config.api_server_use_wss && (
onChange({ ...config, api_server_cert_file: e.target.value })} placeholder="cert.pem" />
onChange({ ...config, api_server_key_file: e.target.value })} placeholder="key.pem" />
)} {/* API Keys */}

为空则允许所有连接

setNewApiKey(e.target.value)} placeholder="输入 API Key" onKeyDown={(e) => { if (e.key === 'Enter') { e.preventDefault() addApiKey() } }} />
{config.api_server_allowed_api_keys.map((apiKey, index) => (
{apiKey}
))}
)}
) })