From 7df06ea98bd88a62dae72198a9d9dcb196baf536 Mon Sep 17 00:00:00 2001 From: JimmFly Date: Thu, 13 Mar 2025 18:37:07 +0800 Subject: [PATCH] feat(admin): add server version check (#10816) --- .../frontend/admin/src/modules/nav/nav.tsx | 4 +- .../admin/src/modules/nav/server-version.tsx | 37 +++++++++++++++++++ .../src/graphql/admin-server-config.gql | 6 +++ .../frontend/graphql/src/graphql/index.ts | 6 +++ packages/frontend/graphql/src/schema.ts | 7 ++++ 5 files changed, 59 insertions(+), 1 deletion(-) create mode 100644 packages/frontend/admin/src/modules/nav/server-version.tsx diff --git a/packages/frontend/admin/src/modules/nav/nav.tsx b/packages/frontend/admin/src/modules/nav/nav.tsx index 028f4a9285..b854fbec9f 100644 --- a/packages/frontend/admin/src/modules/nav/nav.tsx +++ b/packages/frontend/admin/src/modules/nav/nav.tsx @@ -4,6 +4,7 @@ import { AccountIcon, AiOutlineIcon, SelfhostIcon } from '@blocksuite/icons/rc'; import { cssVarV2 } from '@toeverything/theme/v2'; import { NavLink } from 'react-router-dom'; +import { ServerVersion } from './server-version'; import { SettingsItem } from './settings-item'; import { UserDropdown } from './user-dropdown'; @@ -112,11 +113,12 @@ export function Nav({ isCollapsed = false }: NavProps) {
+ {isCollapsed ? null : }
); diff --git a/packages/frontend/admin/src/modules/nav/server-version.tsx b/packages/frontend/admin/src/modules/nav/server-version.tsx new file mode 100644 index 0000000000..2125c09cf9 --- /dev/null +++ b/packages/frontend/admin/src/modules/nav/server-version.tsx @@ -0,0 +1,37 @@ +import { cssVarV2 } from '@toeverything/theme/v2'; +import { useCallback } from 'react'; + +import { Button } from '../../components/ui/button'; +import { useServerConfig } from '../common'; + +export const ServerVersion = () => { + const serverConfig = useServerConfig(); + const availableUpgrade = serverConfig?.availableUpgrade; + const version = serverConfig?.version; + + const handleClick = useCallback(() => { + window.open(availableUpgrade.url, '_blank'); + }, [availableUpgrade]); + + if (availableUpgrade) { + return ( + + ); + } + return ( +
+ ServerVersionv{version} +
+ ); +}; diff --git a/packages/frontend/graphql/src/graphql/admin-server-config.gql b/packages/frontend/graphql/src/graphql/admin-server-config.gql index 82c6a39077..cde62f1ed1 100644 --- a/packages/frontend/graphql/src/graphql/admin-server-config.gql +++ b/packages/frontend/graphql/src/graphql/admin-server-config.gql @@ -12,6 +12,12 @@ query adminServerConfig { credentialsRequirement { ...CredentialsRequirements } + availableUpgrade { + changelog + version + publishedAt + url + } availableUserFeatures } } diff --git a/packages/frontend/graphql/src/graphql/index.ts b/packages/frontend/graphql/src/graphql/index.ts index ec6ac50aed..8fa3dc5618 100644 --- a/packages/frontend/graphql/src/graphql/index.ts +++ b/packages/frontend/graphql/src/graphql/index.ts @@ -40,6 +40,12 @@ export const adminServerConfigQuery = { credentialsRequirement { ...CredentialsRequirements } + availableUpgrade { + changelog + version + publishedAt + url + } availableUserFeatures } } diff --git a/packages/frontend/graphql/src/schema.ts b/packages/frontend/graphql/src/schema.ts index 111702c098..dcfef380b6 100644 --- a/packages/frontend/graphql/src/schema.ts +++ b/packages/frontend/graphql/src/schema.ts @@ -2143,6 +2143,13 @@ export type AdminServerConfigQuery = { maxLength: number; }; }; + availableUpgrade: { + __typename?: 'ReleaseVersionType'; + changelog: string; + version: string; + publishedAt: string; + url: string; + }; }; };