import { useState } from "react"; import { useQuery, useMutation, useQueryClient } from "@tanstack/react-query"; import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs"; import { settingsService, type Setting } from "@/services"; import { toast } from "sonner"; import type { ApiError } from "@/types/error.types"; import { cn } from "@/lib/utils"; export default function SettingsPage() { const queryClient = useQueryClient(); const [selectedCategory, setSelectedCategory] = useState("GENERAL"); const { data: settings, isLoading } = useQuery({ queryKey: ["admin", "settings", selectedCategory], queryFn: () => settingsService.getSettings(selectedCategory), }); const updateSettingMutation = useMutation({ mutationFn: ({ key, value }: { key: string; value: string }) => settingsService.updateSetting(key, { value }), onSuccess: () => { queryClient.invalidateQueries({ queryKey: ["admin", "settings"] }); toast.success("Setting updated successfully"); }, onError: (error) => { const apiError = error as ApiError; toast.error( apiError.response?.data?.message || "Failed to update setting", ); }, }); const handleSave = (key: string, value: string) => { updateSettingMutation.mutate({ key, value }); }; const categories = [ "GENERAL", "EMAIL", "STORAGE", "SECURITY", "API", "FEATURES", ]; return (

System Settings

Configure global application parameters.

{/* View only access: Create Setting button removed */}
{categories.map((cat) => ( {cat} ))} {selectedCategory} Configuration {isLoading ? (
Fetching system variables...
) : settings && settings.length > 0 ? ( settings.map((setting: Setting) => (
{setting.description && (

{setting.description}

)}
{ if (e.target.value !== setting.value) { handleSave(setting.key, e.target.value); } }} />
)) ) : (
No variables defined for this category.
)}
); }