diff --git a/src/features/settings/pages/SettingList.tsx b/src/features/settings/pages/SettingList.tsx index 977a3e6..794b297 100644 --- a/src/features/settings/pages/SettingList.tsx +++ b/src/features/settings/pages/SettingList.tsx @@ -1,5 +1,5 @@ import { useState, useEffect } from "react"; -import { User, Bell, Shield, Plug, Key, Palette, Globe, Database, MessageSquare, Webhook, Box, ChevronRight } from "lucide-react"; +import { User, Bell, Shield, Plug, Key, Palette, Globe, Database, MessageSquare, Webhook, Box, ChevronRight, Save } from "lucide-react"; import { useNavigate } from "react-router-dom"; import { useSelector } from "react-redux"; import type { RootState } from "../../../store"; @@ -7,6 +7,8 @@ import { PageWrapper } from "../../../components/layouts/PageWrapper"; import { Button } from "../../../components/customs/Button"; import { Breadcrumb } from "../../../components/layouts/Breadcrumb"; import { Radio } from "../../../components/customs/Radio"; +import { settingsService } from "../services/settings.service"; +import { notify } from "../../../services/toast"; export default function SettingList() { const navigate = useNavigate(); @@ -15,6 +17,7 @@ export default function SettingList() { const [activeTab, setActiveTab] = useState("General"); const [requireApproval, setRequireApproval] = useState(true); const [autoPublish, setAutoPublish] = useState(false); + const [saving, setSaving] = useState(false); const [orgName, setOrgName] = useState(user?.tenant?.name || "Organization"); const [subdomain, setSubdomain] = useState(user?.tenant?.tenant_code || user?.tenant?.domain || "org"); @@ -28,6 +31,42 @@ export default function SettingList() { } }, [user]); + // Load category settings from API when tab changes + useEffect(() => { + const loadSettings = async () => { + try { + const cat = activeTab.toLowerCase(); + const data = await settingsService.getCategorySettings(cat); + if (data) { + if (data.orgName) setOrgName(data.orgName); + if (data.subdomain) setSubdomain(data.subdomain); + if (data.requireApproval !== undefined) setRequireApproval(data.requireApproval); + if (data.autoPublish !== undefined) setAutoPublish(data.autoPublish); + } + } catch (err) { + // Silently fallback to defaults + } + }; + loadSettings(); + }, [activeTab]); + + const handleSaveGeneral = async () => { + setSaving(true); + try { + await settingsService.updateCategorySettings("general", { + orgName, + subdomain, + requireApproval, + autoPublish + }); + notify.success("General settings saved successfully!"); + } catch (err: any) { + notify.error(err?.message || "Failed to save settings"); + } finally { + setSaving(false); + } + }; + const horizontalTabs = [ { id: "General", icon: User }, { id: "Notifications", icon: Bell }, @@ -151,8 +190,11 @@ export default function SettingList() {