"use client"; import { ServerApi } from "../../types/nezha-api"; import ServerCard from "../../../../components/ServerCard"; import { nezhaFetcher } from "../../../../lib/utils"; import useSWR from "swr"; import getEnv from "../../../../lib/env-entry"; import Switch from "@/components/Switch"; import { useState } from "react"; const defaultTag = "All"; export default function ServerListClient() { const [tag, setTag] = useState(defaultTag); 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 { result } = data; const allTag = result.map((server) => server.tag).filter((tag) => tag); const uniqueTags = [...new Set(allTag)]; uniqueTags.unshift(defaultTag); const sortedServers = result.sort((a, b) => { const displayIndexDiff = (b.display_index || 0) - (a.display_index || 0); if (displayIndexDiff !== 0) return displayIndexDiff; return a.id - b.id; }); const filteredServers = tag === defaultTag ? sortedServers : sortedServers.filter((server) => server.tag === tag); return ( <> {getEnv("NEXT_PUBLIC_ShowTag") === "true" && uniqueTags.length > 1 && ( )}
{filteredServers.map((serverInfo) => ( ))}
); }