From 6e3ceffb95b0b781e178fe30a5d7468e420bc467 Mon Sep 17 00:00:00 2001 From: thehrz Date: Wed, 21 Aug 2024 11:23:38 +0800 Subject: [PATCH] feat: update Checker --- src/components/Checker.tsx | 33 ++++++++++++++------------------- 1 file changed, 14 insertions(+), 19 deletions(-) diff --git a/src/components/Checker.tsx b/src/components/Checker.tsx index 0ef2e3d..903fb77 100644 --- a/src/components/Checker.tsx +++ b/src/components/Checker.tsx @@ -1,21 +1,19 @@ "use client" import CheckItem from "./CheckItem" import { CheckItemType } from "@/types/CheckItem" -import { useRef, useEffect, useState } from "react" +import { useEffect, useState } from "react" import { QueryClient, QueryClientProvider, - useQueryClient, } from "@tanstack/react-query" const queryClient = new QueryClient() export default function Checker() { - // const IPv4 = useRef(null) - const [IPv6, setIPv6] = useState(null) + const [IP, setIP] = useState(null) useEffect(() => { - if (IPv6) { + if (IP) { queryClient.invalidateQueries( { queryKey: ['ISP'], @@ -23,18 +21,16 @@ export default function Checker() { }, ) } - }, [IPv6]) + }, [IP]) const checkList: CheckItemType[] = [ { id: "IPv6", name: "公网 IPv6 地址", - fetcher: () => fetch("/api/ip/myip").then((res) => res.json()), + fetcher: () => fetch("https://6.ipv6test.online/ip/myip").then((res) => res.json()), content: (data) => { const success = data?.version == 6 - if (success && data.address != null) { - setIPv6(data.address) - } + return { state: success ? "ok" : "error", text: success ? `${data?.address}` : "未检测到", @@ -45,14 +41,10 @@ export default function Checker() { id: "IPv4", name: "公网 IPv4 地址", fetcher: () => - fetch("https://test.ipv6test.online/ip/myip").then((res) => res.json()), + fetch("https://4.ipv6test.online/ip/myip").then((res) => res.json()), content: (data) => { const success = data?.version == 4 - // if (success && data.address != null) { - // IPv4.current = data.address - // } - return { state: success ? "ok" : "error", text: success ? `${data?.address}` : "未检测到", @@ -62,11 +54,14 @@ export default function Checker() { { id: "ipv4andipv6", name: "双协议栈测试", - fetcher: () => fetch("/api/ip/myip").then((res) => res.json()), + fetcher: () => fetch("https://test.ipv6test.online/ip/myip").then((res) => res.json()), content: (data) => { const isIPv6 = data?.version == 6 const isIPv4 = data?.version == 4 + if (data.address != null) { + setIP(data.address) + } return { state: isIPv6 ? "ok" : "error", text: isIPv6 ? "IPv6访问优先" : isIPv4 ? "IPv4访问优先" : "未检测到", @@ -80,13 +75,13 @@ export default function Checker() { fetch("https://test.ipv6test.online/ip/isp", { method: "POST", body: JSON.stringify({ - address: IPv6, + address: IP, }), }).then((res) => res.json()), - enabled: () => !!IPv6, // 确保在检测到 IPv6 地址时也进行 ISP 检查 + enabled: () => !!IP, content: (data) => { return { - state: data.isp ? "ok" : "error", // 确保返回 state 字段 + state: data.isp ? "ok" : "error", text: data.isp || "未检测到", } },