From ec5dc2742a482d72f6cb0f85980940db72702686 Mon Sep 17 00:00:00 2001 From: hamster1963 <1410514192@qq.com> Date: Thu, 26 Sep 2024 18:07:52 +0800 Subject: [PATCH] refactor: error state --- .env.example | 9 +++--- .../ClientComponents/ServerListClient.tsx | 11 ++++++- app/api/server/route.ts | 29 ++++++++++++------- docker/.env.example | 5 ++-- 4 files changed, 34 insertions(+), 20 deletions(-) diff --git a/.env.example b/.env.example index b64cef0..b69c8b8 100644 --- a/.env.example +++ b/.env.example @@ -1,6 +1,5 @@ -NezhaBaseUrl=http://1.1.1.1:8008 -NezhaAuth=nezha-token -ServerDisablePrefetch=false -NEXT_PUBLIC_NezhaFetchInterval=2000 +NezhaBaseUrl=http://124.XX.XX.XX:8008 +NezhaAuth=your-nezha-api-token +NEXT_PUBLIC_NezhaFetchInterval=5000 NEXT_PUBLIC_ShowFlag=true -NEXT_PUBLIC_DisableCartoon=false \ No newline at end of file +NEXT_PUBLIC_DisableCartoon=true \ No newline at end of file diff --git a/app/[locale]/(main)/ClientComponents/ServerListClient.tsx b/app/[locale]/(main)/ClientComponents/ServerListClient.tsx index 756c5ca..c111d03 100644 --- a/app/[locale]/(main)/ClientComponents/ServerListClient.tsx +++ b/app/[locale]/(main)/ClientComponents/ServerListClient.tsx @@ -6,9 +6,18 @@ import { nezhaFetcher } from "../../../../lib/utils"; import useSWR from "swr"; import getEnv from "../../../../lib/env-entry"; export default function ServerListClient() { - const { data } = useSWR("/api/server", nezhaFetcher, { + const { data, error } = useSWR("/api/server", nezhaFetcher, { refreshInterval: Number(getEnv("NEXT_PUBLIC_NezhaFetchInterval")) || 2000, }); + if (error) + return ( +
+

{error.message}

+

+ Please check your environment variables and review the server console logs for more details. +

+
+ ); if (!data) return null; const sortedServers = data.result.sort((a, b) => { if (a.display_index && b.display_index) { diff --git a/app/api/server/route.ts b/app/api/server/route.ts index b7c5583..0854a79 100644 --- a/app/api/server/route.ts +++ b/app/api/server/route.ts @@ -8,17 +8,19 @@ export const dynamic = "force-dynamic"; export const runtime = 'edge'; +interface NezhaDataResponse { + error?: string; + data?: ServerApi; +} + + export async function GET(_: Request) { - try { - const response = await GetNezhaData(); - return NextResponse.json(response, { status: 200 }); - } catch (error) { - console.error(error); - return NextResponse.json( - { error: "fetch nezha data failed" }, - { status: 400 }, - ); + const response = (await GetNezhaData()) as NezhaDataResponse; + if (response.error) { + console.log(response.error); + return NextResponse.json({ error: response.error }, { status: 400 }); } + return NextResponse.json(response, { status: 200 }); } async function GetNezhaData() { @@ -26,7 +28,7 @@ async function GetNezhaData() { var nezhaBaseUrl = getEnv("NezhaBaseUrl"); if (!nezhaBaseUrl) { console.log("NezhaBaseUrl is not set"); - return; + return { error: "NezhaBaseUrl is not set" }; } // Remove trailing slash @@ -42,7 +44,12 @@ async function GetNezhaData() { revalidate: 0, }, }); - const nezhaData = (await response.json()).result as NezhaAPI[]; + const resData = await response.json(); + const nezhaData = resData.result as NezhaAPI[]; + if (!nezhaData) { + console.log(resData); + return { error: "NezhaData fetch failed" }; + } const data: ServerApi = { live_servers: 0, offline_servers: 0, diff --git a/docker/.env.example b/docker/.env.example index b811421..b69c8b8 100644 --- a/docker/.env.example +++ b/docker/.env.example @@ -1,6 +1,5 @@ -NezhaBaseUrl=http://0.0.0.0:8008 -NezhaAuth=5hAY3QX6Nl9B3UOQgB26KdsdS1dsdUdM -ServerDisablePrefetch=false +NezhaBaseUrl=http://124.XX.XX.XX:8008 +NezhaAuth=your-nezha-api-token NEXT_PUBLIC_NezhaFetchInterval=5000 NEXT_PUBLIC_ShowFlag=true NEXT_PUBLIC_DisableCartoon=true \ No newline at end of file