import React, { useState, useEffect } from "react"; import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card"; import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs"; import { Button } from "@/components/ui/button"; import { Plus, Loader2 } from "lucide-react"; import { AlertConfiguration, alertConfigService } from "@/services/alertConfigService"; import { NotificationChannelDialog } from "./NotificationChannelDialog"; import { NotificationChannelList } from "./NotificationChannelList"; const NotificationSettings = () => { const [isLoading, setIsLoading] = useState(true); const [alertConfigs, setAlertConfigs] = useState([]); const [dialogOpen, setDialogOpen] = useState(false); const [currentTab, setCurrentTab] = useState("all"); const [editingConfig, setEditingConfig] = useState(null); const fetchAlertConfigurations = async () => { setIsLoading(true); try { const configs = await alertConfigService.getAlertConfigurations(); setAlertConfigs(configs); } finally { setIsLoading(false); } }; useEffect(() => { fetchAlertConfigurations(); }, []); const handleAddNew = () => { setEditingConfig(null); setDialogOpen(true); }; const handleEdit = (config: AlertConfiguration) => { setEditingConfig(config); setDialogOpen(true); }; const handleDelete = async (id: string) => { const success = await alertConfigService.deleteAlertConfiguration(id); if (success) { fetchAlertConfigurations(); } }; const handleDialogClose = (refreshList: boolean) => { setDialogOpen(false); if (refreshList) { fetchAlertConfigurations(); } }; const getFilteredConfigs = () => { if (currentTab === "all") return alertConfigs; return alertConfigs.filter(config => config.notification_type === currentTab); }; return (
Notification Settings Configure notification channels for your services
All Channels Telegram Discord Slack Signal Email Webhook {isLoading ? (
) : ( )}
); }; export default NotificationSettings;