diff --git a/src/App.tsx b/src/App.tsx
index 8fd81c8..c4da0e3 100644
--- a/src/App.tsx
+++ b/src/App.tsx
@@ -1,14 +1,71 @@
-import React from "react"
+import { useQuery } from "@tanstack/react-query"
+import React, { useCallback, useEffect } from "react"
import { Route, BrowserRouter as Router, Routes } from "react-router-dom"
import Footer from "./components/Footer"
import Header from "./components/Header"
+import { fetchSetting } from "./lib/nezha-api"
import ErrorPage from "./pages/ErrorPage"
import NotFound from "./pages/NotFound"
import Server from "./pages/Server"
import ServerDetail from "./pages/ServerDetail"
const App: React.FC = () => {
+ const { data: settingData, error } = useQuery({
+ queryKey: ["setting"],
+ queryFn: () => fetchSetting(),
+ refetchOnMount: true,
+ refetchOnWindowFocus: true,
+ })
+
+ const InjectContext = useCallback((content: string) => {
+ const tempDiv = document.createElement("div")
+ tempDiv.innerHTML = content
+
+ const handlers: { [key: string]: (element: HTMLElement) => void } = {
+ SCRIPT: (element) => {
+ const script = document.createElement("script")
+ if ((element as HTMLScriptElement).src) {
+ script.src = (element as HTMLScriptElement).src
+ } else {
+ script.textContent = element.textContent
+ }
+ document.body.appendChild(script)
+ },
+ STYLE: (element) => {
+ const style = document.createElement("style")
+ style.textContent = element.textContent
+ document.head.appendChild(style)
+ },
+ DEFAULT: (element) => {
+ document.body.appendChild(element)
+ },
+ }
+
+ Array.from(tempDiv.childNodes).forEach((node) => {
+ if (node.nodeType === Node.ELEMENT_NODE) {
+ const element = node as HTMLElement
+ ;(handlers[element.tagName] || handlers.DEFAULT)(element)
+ } else if (node.nodeType === Node.TEXT_NODE) {
+ document.body.appendChild(document.createTextNode(node.textContent || ""))
+ }
+ })
+ }, [])
+
+ useEffect(() => {
+ if (settingData?.data?.custom_code) {
+ InjectContext(settingData?.data?.custom_code)
+ }
+ }, [settingData?.data?.custom_code])
+
+ if (error) {
+ return
+ }
+
+ if (!settingData) {
+ return null
+ }
+
return (
diff --git a/src/components/Header.tsx b/src/components/Header.tsx
index dd171a5..bcffb19 100644
--- a/src/components/Header.tsx
+++ b/src/components/Header.tsx
@@ -4,7 +4,7 @@ import { Skeleton } from "@/components/ui/skeleton"
import { fetchLoginUser, fetchSetting } from "@/lib/nezha-api"
import { useQuery } from "@tanstack/react-query"
import { DateTime } from "luxon"
-import { useCallback, useEffect, useRef, useState } from "react"
+import { useEffect, useRef, useState } from "react"
import { useTranslation } from "react-i18next"
import { useNavigate } from "react-router-dom"
@@ -23,50 +23,10 @@ function Header() {
const siteName = settingData?.data?.site_name
- const InjectContext = useCallback((content: string) => {
- const tempDiv = document.createElement("div")
- tempDiv.innerHTML = content
-
- const handlers: { [key: string]: (element: HTMLElement) => void } = {
- SCRIPT: (element) => {
- const script = document.createElement("script")
- if ((element as HTMLScriptElement).src) {
- script.src = (element as HTMLScriptElement).src
- } else {
- script.textContent = element.textContent
- }
- document.body.appendChild(script)
- },
- STYLE: (element) => {
- const style = document.createElement("style")
- style.textContent = element.textContent
- document.head.appendChild(style)
- },
- DEFAULT: (element) => {
- document.body.appendChild(element)
- },
- }
-
- Array.from(tempDiv.childNodes).forEach((node) => {
- if (node.nodeType === Node.ELEMENT_NODE) {
- const element = node as HTMLElement
- ;(handlers[element.tagName] || handlers.DEFAULT)(element)
- } else if (node.nodeType === Node.TEXT_NODE) {
- document.body.appendChild(document.createTextNode(node.textContent || ""))
- }
- })
- }, [])
-
useEffect(() => {
document.title = siteName || "NEZHA"
}, [siteName])
- useEffect(() => {
- if (settingData?.data?.custom_code) {
- InjectContext(settingData?.data?.custom_code)
- }
- }, [settingData?.data?.custom_code])
-
return (
diff --git a/src/components/ServerCard.tsx b/src/components/ServerCard.tsx
index 8d0c6e2..8afa7f2 100644
--- a/src/components/ServerCard.tsx
+++ b/src/components/ServerCard.tsx
@@ -28,7 +28,7 @@ export default function ServerCard({ now, serverInfo }: { now: number; serverInf
const showFlag = true
// @ts-expect-error ShowNetTransfer is a global variable
- const disableShowNetTransfer = window.ShowNetTransfer === "false"
+ const showNetTransfer = window.ShowNetTransfer === "true"
const parsedData = parsePublicNote(public_note)
@@ -123,7 +123,7 @@ export default function ServerCard({ now, serverInfo }: { now: number; serverInf
- {!disableShowNetTransfer && (
+ {showNetTransfer && (
navigate(`/server/${serverInfo.id}`, { replace: true })}
>
diff --git a/src/components/ServerOverview.tsx b/src/components/ServerOverview.tsx
index d821628..3b285ea 100644
--- a/src/components/ServerOverview.tsx
+++ b/src/components/ServerOverview.tsx
@@ -29,6 +29,9 @@ export default function ServerOverview({
const { status, setStatus } = useStatus()
const { filter, setFilter } = useFilter()
+ // @ts-expect-error DisableAnimatedMan is a global variable
+ const disableAnimatedMan = window.DisableAnimatedMan === "true"
+
return (
<>
@@ -142,11 +145,14 @@ export default function ServerOverview({
-
+ {!disableAnimatedMan && (
+
+ )}