"use client"; import { useEffect, useRef } from "react"; import { LoaderCircle } from "lucide-react"; import { useAuthGuard } from "@/lib/use-auth-guard"; import { BackupSettingsCard } from "./components/backup-settings-card"; import { ConfigCard } from "./components/config-card"; import { CPAPoolDialog } from "./components/cpa-pool-dialog"; import { CPAPoolsCard } from "./components/cpa-pools-card"; import { ImportBrowserDialog } from "./components/import-browser-dialog"; import { SettingsHeader } from "./components/settings-header"; import { Sub2APIConnections } from "./components/sub2api-connections"; import { UserKeysCard } from "./components/user-keys-card"; import { useSettingsStore } from "./store"; function SettingsDataController() { const didLoadRef = useRef(false); const initialize = useSettingsStore((state) => state.initialize); const loadPools = useSettingsStore((state) => state.loadPools); const loadBackups = useSettingsStore((state) => state.loadBackups); const pools = useSettingsStore((state) => state.pools); const backupState = useSettingsStore((state) => state.backupState); useEffect(() => { if (didLoadRef.current) { return; } didLoadRef.current = true; void initialize(); }, [initialize]); useEffect(() => { const hasRunningJobs = pools.some((pool) => { const status = pool.import_job?.status; return status === "pending" || status === "running"; }); if (!hasRunningJobs) { return; } const timer = window.setInterval(() => { void loadPools(true); }, 1500); return () => window.clearInterval(timer); }, [loadPools, pools]); useEffect(() => { if (!backupState?.running) { return; } const timer = window.setInterval(() => { void loadBackups(true); }, 3000); return () => window.clearInterval(timer); }, [backupState?.running, loadBackups]); return null; } function SettingsPageContent() { return ( <>
); } export default function SettingsPage() { const { isCheckingAuth, session } = useAuthGuard(["admin"]); if (isCheckingAuth || !session || session.role !== "admin") { return (
); } return ; }