From d32050d08132a6b41cb8477d905c9b3e564d514e Mon Sep 17 00:00:00 2001 From: fengsilin Date: Mon, 25 May 2026 09:45:09 +0800 Subject: [PATCH] fix: restore login widget bundle and guard custom nav link --- web/src/hooks/common/useNavigation.js | 6 ++++- .../Operation/SettingsHeaderNavModules.jsx | 22 +++++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/web/src/hooks/common/useNavigation.js b/web/src/hooks/common/useNavigation.js index e0b86e1..f325ae5 100644 --- a/web/src/hooks/common/useNavigation.js +++ b/web/src/hooks/common/useNavigation.js @@ -65,7 +65,11 @@ export const useNavigation = (t, headerNavModules) => { : modules.pricing; } if (link.itemKey === 'customLink') { - return modules.customLink?.enabled === true && modules.customLink?.text; + return ( + modules.customLink?.enabled === true && + modules.customLink?.text && + modules.customLink?.url + ); } return modules[link.itemKey] === true; }); diff --git a/web/src/pages/Setting/Operation/SettingsHeaderNavModules.jsx b/web/src/pages/Setting/Operation/SettingsHeaderNavModules.jsx index 8b4398f..4cefa18 100644 --- a/web/src/pages/Setting/Operation/SettingsHeaderNavModules.jsx +++ b/web/src/pages/Setting/Operation/SettingsHeaderNavModules.jsx @@ -129,6 +129,15 @@ export default function SettingsHeaderNavModules(props) { // 保存配置 async function onSubmit() { + const customLinkText = (headerNavModules.customLink?.text || '').trim(); + const customLinkUrl = (headerNavModules.customLink?.url || '').trim(); + if ( + headerNavModules.customLink?.enabled && + (!customLinkText || !customLinkUrl) + ) { + showError(t('启用自定义链接前请先填写完整的导航文案和跳转链接')); + return; + } setLoading(true); try { const res = await API.put('/api/option/', { @@ -410,6 +419,19 @@ export default function SettingsHeaderNavModules(props) { placeholder={t('如 https://example.com 或 /docs')} size='small' /> + + {t('未填写跳转链接时,自定义链接不会在前台显示')} + )}