import useSWR from "swr"; import React, { useEffect } from "react"; import { useLockFn } from "ahooks"; import { useTranslation } from "react-i18next"; import { Button } from "@/components/ui/button"; import { closeAllConnections, getClashConfig } from "@/services/api"; import { patchClashMode } from "@/services/cmds"; import { useVerge } from "@/hooks/use-verge"; import { ProxyGroups } from "@/components/proxy/proxy-groups"; import { ProviderButton } from "@/components/proxy/provider-button"; import { SidebarTrigger } from "@/components/ui/sidebar"; const ProxyPage = () => { const { t } = useTranslation(); const { data: clashConfig, mutate: mutateClash } = useSWR( "getClashConfig", getClashConfig, { revalidateOnFocus: false, revalidateIfStale: true, }, ); const { verge } = useVerge(); const modeList = ["rule", "global", "direct"]; const curMode = clashConfig?.mode?.toLowerCase(); const onChangeMode = useLockFn(async (mode: string) => { if (mode !== curMode && verge?.auto_close_connection) { closeAllConnections(); } await patchClashMode(mode); mutateClash(); }); useEffect(() => { if (curMode && !modeList.includes(curMode)) { onChangeMode("rule"); } }, [curMode]); return (