diff --git a/src/components/Header.tsx b/src/components/Header.tsx index fa58d08..e82a5ec 100644 --- a/src/components/Header.tsx +++ b/src/components/Header.tsx @@ -1,7 +1,7 @@ import { ModeToggle } from "@/components/ThemeSwitcher"; import { Separator } from "@/components/ui/separator"; import { Skeleton } from "@/components/ui/skeleton"; -import { fetchLoginUser } from "@/lib/nezha-api"; +import { fetchLoginUser, fetchSetting } from "@/lib/nezha-api"; import { useQuery } from "@tanstack/react-query"; import { DateTime } from "luxon"; import { useEffect, useRef, useState } from "react"; @@ -12,6 +12,16 @@ import { useNavigate } from "react-router-dom"; function Header() { const { t } = useTranslation(); const navigate = useNavigate(); + + const { data: settingData,isLoading } = useQuery({ + queryKey: ["setting"], + queryFn: () => fetchSetting(), + refetchOnMount: true, + refetchOnWindowFocus: true, + }); + + const siteName = settingData?.data?.site_name; + return (
@@ -28,7 +38,11 @@ function Header() { className="relative m-0! border-2 border-transparent h-6 w-6 object-cover object-top p-0!" />
- {"NEZHA"} + {isLoading ? ( + + ) : ( + siteName || "NEZHA" + )} => { @@ -42,3 +43,12 @@ export const fetchService = async (): Promise => { } return data; }; + +export const fetchSetting = async (): Promise => { + const response = await fetch("/api/v1/setting"); + const data = await response.json(); + if (data.error) { + throw new Error(data.error); + } + return data; +}; diff --git a/src/types/nezha-api.ts b/src/types/nezha-api.ts index f702221..d529610 100644 --- a/src/types/nezha-api.ts +++ b/src/types/nezha-api.ts @@ -149,3 +149,13 @@ export interface CycleTransferData { [key: string]: string; }; } + + +export interface SettingResponse { + success: boolean; + data: { + language: string; + site_name: string; + custom_code: string; + }; +} \ No newline at end of file