♻️ refactor: refactor the logic of fetchTokenKeys and SetupCheck
This commit is contained in:
@@ -0,0 +1,32 @@
|
||||
import { useContext, useEffect } from 'react';
|
||||
import { useLocation } from 'react-router-dom';
|
||||
import { StatusContext } from '../context/Status';
|
||||
|
||||
/**
|
||||
* 自定义Hook:检查系统setup状态并进行重定向
|
||||
* @param {Object} options - 配置选项
|
||||
* @param {boolean} options.autoRedirect - 是否自动重定向,默认true
|
||||
* @param {string} options.setupPath - setup页面路径,默认'/setup'
|
||||
* @returns {Object} 返回setup状态信息
|
||||
*/
|
||||
export function useSetupCheck(options = {}) {
|
||||
const { autoRedirect = true, setupPath = '/setup' } = options;
|
||||
const [statusState] = useContext(StatusContext);
|
||||
const location = useLocation();
|
||||
|
||||
const isSetupComplete = statusState?.status?.setup !== false;
|
||||
const needsSetup = !isSetupComplete && location.pathname !== setupPath;
|
||||
|
||||
useEffect(() => {
|
||||
if (autoRedirect && needsSetup) {
|
||||
window.location.href = setupPath;
|
||||
}
|
||||
}, [autoRedirect, needsSetup, setupPath]);
|
||||
|
||||
return {
|
||||
isSetupComplete,
|
||||
needsSetup,
|
||||
statusState,
|
||||
currentPath: location.pathname
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user