From 81aef736d663850b67f82a58680691d854614b05 Mon Sep 17 00:00:00 2001
From: GyDi <segydi@foxmail.com>
Date: Mon, 20 Dec 2021 01:29:49 +0800
Subject: [PATCH] feat: proxy page use swr

---
 src/pages/proxy.tsx   | 14 +++-----------
 src/pages/rules.tsx   |  2 ++
 src/services/proxy.ts |  2 +-
 3 files changed, 6 insertions(+), 12 deletions(-)

diff --git a/src/pages/proxy.tsx b/src/pages/proxy.tsx
index 1c36ca7..c0d8e58 100644
--- a/src/pages/proxy.tsx
+++ b/src/pages/proxy.tsx
@@ -1,19 +1,11 @@
-import { useEffect, useState } from "react";
+import useSWR from "swr";
 import { Box, List, Typography } from "@mui/material";
 import services from "../services";
 import ProxyGroup from "../components/proxy-group";
-import type { ProxyGroupItem } from "../services/proxy";
 
 const ProxyPage = () => {
-  const [groups, setGroups] = useState<ProxyGroupItem[]>([]);
-
-  useEffect(() => {
-    // Todo
-    // result cache
-    services.getProxyInfo().then((res) => {
-      setGroups(res.groups);
-    });
-  }, []);
+  const { data } = useSWR("getProxies", services.getProxies);
+  const { groups = [] } = data ?? {};
 
   return (
     <Box sx={{ width: 0.9, maxWidth: "850px", mx: "auto", mb: 2 }}>
diff --git a/src/pages/rules.tsx b/src/pages/rules.tsx
index be63f42..7e4f250 100644
--- a/src/pages/rules.tsx
+++ b/src/pages/rules.tsx
@@ -1,6 +1,7 @@
 import { useRef, useState } from "react";
 import useSWR, { useSWRConfig } from "swr";
 import { Box, Button, Grid, TextField, Typography } from "@mui/material";
+import services from "../services";
 import {
   getProfiles,
   importProfile,
@@ -35,6 +36,7 @@ const RulesPage = () => {
     putProfiles(index)
       .then(() => {
         mutate("getProfiles", { ...profiles, current: index }, true);
+        mutate("getProxies", services.getProxies());
       })
       .catch((err) => {
         console.error(err);
diff --git a/src/services/proxy.ts b/src/services/proxy.ts
index 3dbdae8..1f29ac9 100644
--- a/src/services/proxy.ts
+++ b/src/services/proxy.ts
@@ -17,7 +17,7 @@ export type ProxyGroupItem = Omit<ProxyItem, "all"> & {
 };
 
 /// Get the Proxy infomation
-export async function getProxyInfo() {
+export async function getProxies() {
   const axiosIns = await getAxios();
   const response = await axiosIns.get<any, any>("/proxies");
   const proxies = (response?.proxies ?? {}) as Record<string, ProxyItem>;
-- 
GitLab