// Copyright 2026 Arctel.net // SPDX-License-Identifier: Apache-2.0 "use client" import dynamic from "next/dynamic" import {useEffect, useMemo} from "react" import {useQuery} from "@tanstack/react-query" import {Loader2, Settings} from "lucide-react" import {useRouter} from "next/navigation" import {motion} from "motion/react" import {Tabs, TabsContent, TabsList, TabsTrigger} from "@/components/ui/tabs" import {useAuth} from "@/components/providers/auth-provider" import services from "@/lib/services" import type {SystemConfig} from "@/lib/services/admin" const tabFallback = (
) const SecurityTab = dynamic( () => import("@/components/common/settings/security-tab").then((mod) => mod.SecurityTab), { loading: () => tabFallback }, ) const OperationTab = dynamic( () => import("@/components/common/settings/operation-tab").then((mod) => mod.OperationTab), { loading: () => tabFallback }, ) const SystemTab = dynamic( () => import("@/components/common/settings/system-tab").then((mod) => mod.SystemTab), { loading: () => tabFallback }, ) const OtherTab = dynamic( () => import("@/components/common/settings/other-tab").then((mod) => mod.OtherTab), { loading: () => tabFallback }, ) const InfoTab = dynamic( () => import("@/components/common/settings/info-tab").then((mod) => mod.InfoTab), { loading: () => tabFallback }, ) const SystemStatusManager = dynamic( () => import("./components/system-status").then((mod) => mod.SystemStatusManager), { loading: () => tabFallback }, ) function systemConfigMap(configs: SystemConfig[]) { return configs.reduce>((accumulator, config) => { accumulator[config.key] = config return accumulator }, {}) } export function AdminSettingsPageClient() { const { user, loading } = useAuth() const router = useRouter() const systemConfigsQuery = useQuery({ queryKey: ["admin", "system-configs"], queryFn: () => services.adminSystemConfig.listSystemConfigs("system"), enabled: !!user?.is_admin, }) const configs = useMemo( () => systemConfigMap(systemConfigsQuery.data ?? []), [systemConfigsQuery.data], ) useEffect(() => { if (!loading && (!user || !user.is_admin)) { router.replace("/settings/profile") } }, [user, loading, router]) if (loading || !user || !user.is_admin) { return (
) } return (

系统设置

安全设置 业务设置 系统设置 其他设置 系统状态 系统信息
) }