import { InputNumber } from 'antd'; import { CloudServerOutlined, ThunderboltOutlined, DesktopOutlined, DashboardOutlined, SafetyOutlined } from '@ant-design/icons'; import type { AllSetting } from '@/models/setting'; import { NotificationLayout } from './NotificationLayout'; import { NotificationGroup } from './NotificationGroup'; import type { NotificationGroupConfig } from './types'; const GROUPS: NotificationGroupConfig[] = [ { icon: , title: 'eventGroupOutbound', events: [ { key: 'outbound.down', label: 'eventOutboundDown', settingKey: '' }, { key: 'outbound.up', label: 'eventOutboundUp', settingKey: '' }, ], }, { icon: , title: 'eventGroupXray', events: [ { key: 'xray.crash', label: 'eventXrayCrash', settingKey: '' }, ], }, { icon: , title: 'eventGroupNode', events: [ { key: 'node.down', label: 'eventNodeDown', settingKey: '' }, { key: 'node.up', label: 'eventNodeUp', settingKey: '' }, ], }, { icon: , title: 'eventGroupSystem', events: [ { key: 'cpu.high', label: 'eventCPUHigh', settingKey: 'tgCpu', extra: ({ value, onChange }) => ( ), }, { key: 'memory.high', label: 'eventMemoryHigh', settingKey: 'tgMemory', extra: ({ value, onChange }) => ( ), }, ], }, { icon: , title: 'eventGroupSecurity', events: [ { key: 'login.attempt', label: 'eventLoginAttempt', settingKey: '' }, ], }, ]; interface Props { allSetting: AllSetting; updateSetting: (patch: Partial) => void; } export function TelegramNotifications({ allSetting, updateSetting }: Props) { const events = allSetting.tgEnabledEvents || ''; const selected = events ? events.split(',').map((s) => s.trim()).filter(Boolean) : []; function toggle(key: string) { const next = selected.includes(key) ? selected.filter((e) => e !== key) : [...selected, key]; updateSetting({ tgEnabledEvents: next.join(',') }); } function toggleAll(keys: string[]) { const allSelected = keys.every((v) => selected.includes(v)); const next = allSelected ? selected.filter((v) => !keys.includes(v)) : [...new Set([...selected, ...keys])]; updateSetting({ tgEnabledEvents: next.join(',') }); } return ( {GROUPS.map((group, i) => ( ))} ); }