From 2b09ee3a912a5574abdcd02c8006d3dd5ecf0af0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AE=87=E9=98=B3?= Date: Thu, 12 Dec 2024 12:28:38 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8A=9F=E8=83=BD=EF=BC=9A=E5=AE=8C=E6=88=90?= =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E7=89=88=E6=9C=AC=E5=8F=B7=E5=B1=95=E7=A4=BA?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env | 3 ++ src/components/Sidebar/index.tsx | 7 ++- src/hooks/useVersionData.tsx | 24 +++++++++ .../Dashboard/components/HeaderInfo/index.tsx | 50 +++++++++++++------ src/pages/Iterative/index.tsx | 24 +++++---- src/types/env.d.ts | 2 + 6 files changed, 85 insertions(+), 25 deletions(-) create mode 100644 src/hooks/useVersionData.tsx diff --git a/.env b/.env index aeafba6..c353370 100644 --- a/.env +++ b/.env @@ -1,3 +1,6 @@ +# 项目版本号 +VITE_VERSION=2.1.6 + # 项目后端API地址 VITE_PROJECT_API= diff --git a/src/components/Sidebar/index.tsx b/src/components/Sidebar/index.tsx index 81045e6..c002b1e 100644 --- a/src/components/Sidebar/index.tsx +++ b/src/components/Sidebar/index.tsx @@ -10,6 +10,7 @@ import { useUserStore } from '@/stores'; import { getRouteListAPI } from '@/api/Role' import { Route } from '@/types/app/route'; import logo from '@/images/logo/logo.png' +import useVersionData from '@/hooks/useVersionData'; interface SidebarProps { sidebarOpen: boolean; @@ -20,6 +21,8 @@ const Sidebar = ({ sidebarOpen, setSidebarOpen }: SidebarProps) => { const location = useLocation(); const store = useUserStore(); + const version = useVersionData(); + const { pathname } = location; const trigger = useRef(null); @@ -235,7 +238,9 @@ const Sidebar = ({ sidebarOpen, setSidebarOpen }: SidebarProps) => { to: "/iter", path: "iter", icon: , - name: "更新日志" + // name:
更新日志
+ name:
更新日志
+ // version } ] } diff --git a/src/hooks/useVersionData.tsx b/src/hooks/useVersionData.tsx new file mode 100644 index 0000000..8bb2e53 --- /dev/null +++ b/src/hooks/useVersionData.tsx @@ -0,0 +1,24 @@ +import { useState, useEffect } from 'react'; +import axios from 'axios'; + +interface Version { name: string, tag_name: string, tarball_url: string } + +const useVersionData = () => { + const [version, setVersion] = useState({} as Version); + + useEffect(() => { + const getVersionData = async () => { + const project_version = JSON.parse(sessionStorage.getItem('project_version') || '{}'); + if (Object.keys(project_version).length !== 0) return setVersion(project_version); + const { data } = await axios.get("https://api.github.com/repos/LiuYuYang01/ThriveX-Admin/releases/latest"); + setVersion(data); + sessionStorage.setItem('project_version', JSON.stringify(data)); + }; + + getVersionData(); + }, []); + + return version; +}; + +export default useVersionData; \ No newline at end of file diff --git a/src/pages/Dashboard/components/HeaderInfo/index.tsx b/src/pages/Dashboard/components/HeaderInfo/index.tsx index 81bd476..486c8ed 100644 --- a/src/pages/Dashboard/components/HeaderInfo/index.tsx +++ b/src/pages/Dashboard/components/HeaderInfo/index.tsx @@ -1,23 +1,43 @@ -import React from 'react'; -import { EditOutlined } from '@ant-design/icons'; import { useUserStore } from '@/stores'; +import { FaDownload } from "react-icons/fa6"; +import useVersionData from '@/hooks/useVersionData'; -const HeaderInfo: React.FC = () => { + +const HeaderInfo = () => { const { user } = useUserStore(); - return ( -
- {/* 头像 */} - avatar + const version = useVersionData(); - {/* 信息 */} -
-
-
Hello {user?.name || '未命名'}!
-
欢迎使用现代化博客管理系统
+ return ( +
+
+ {/* 头像 */} + avatar + + {/* 信息 */} +
+
+
Hello {user?.name || '未命名'}!
+
欢迎使用 ThriveX 现代化博客管理系统
+
+
+
+ + {/* 项目版本号 */} +
+
+

当前版本:{import.meta.env.VITE_VERSION}

+

最新版本:{version.tag_name}

+
+ +

更新说明:{version.name}

+ +
diff --git a/src/pages/Iterative/index.tsx b/src/pages/Iterative/index.tsx index 29ab4b8..c68018c 100644 --- a/src/pages/Iterative/index.tsx +++ b/src/pages/Iterative/index.tsx @@ -30,14 +30,20 @@ const Home = () => { } )) - sessionStorage.setItem('blog_project_iterative', JSON.stringify(result)) - project === "ThriveX-Blog" && setBlog_IterativeRecording(result) - - sessionStorage.setItem('admin_project_iterative', JSON.stringify(result)) - project === "ThriveX-Admin" && setAdmin_IterativeRecording(result) - - sessionStorage.setItem('server_project_iterative', JSON.stringify(result)) - project === "ThriveX-Server" && setServer_IterativeRecording(result) + switch (project) { + case "ThriveX-Blog": + sessionStorage.setItem('blog_project_iterative', JSON.stringify(result)) + setBlog_IterativeRecording(result) + break; + case "ThriveX-Admin": + sessionStorage.setItem('admin_project_iterative', JSON.stringify(result)) + setAdmin_IterativeRecording(result) + break; + case "ThriveX-Server": + sessionStorage.setItem('server_project_iterative', JSON.stringify(result)) + setServer_IterativeRecording(result) + break; + } } useEffect(() => { @@ -80,7 +86,7 @@ const Home = () => {
-
+

ThriveX-Blog

diff --git a/src/types/env.d.ts b/src/types/env.d.ts index 84ae28d..6532163 100644 --- a/src/types/env.d.ts +++ b/src/types/env.d.ts @@ -1,4 +1,6 @@ interface ImportMetaEnv { + readonly VITE_VERSION: string; + readonly VITE_PROJECT_API: string; readonly VITE_BAIDU_TONGJI_KEY: string;