File size: 3,472 Bytes
4086c42 bf1e3ff d80b399 bf1e3ff d80b399 aa396c5 4086c42 04d557b ef0f1be 04d557b d80b399 04d557b cd46bb2 88e5a61 cd46bb2 bf1e3ff be99f83 bf1e3ff |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 |
import { ITenantInfo } from '@/interfaces/database/knowledge';
import { ISystemStatus, IUserInfo } from '@/interfaces/database/userSetting';
import userService from '@/services/userService';
import authorizationUtil from '@/utils/authorizationUtil';
import { useCallback, useEffect, useMemo, useState } from 'react';
import { history, useDispatch, useSelector } from 'umi';
export const useFetchUserInfo = () => {
const dispatch = useDispatch();
const fetchUserInfo = useCallback(() => {
dispatch({ type: 'settingModel/getUserInfo' });
}, [dispatch]);
useEffect(() => {
fetchUserInfo();
}, [fetchUserInfo]);
};
export const useSelectUserInfo = () => {
const userInfo: IUserInfo = useSelector(
(state: any) => state.settingModel.userInfo,
);
return userInfo;
};
export const useSelectTenantInfo = () => {
const tenantInfo: ITenantInfo = useSelector(
(state: any) => state.settingModel.tenantIfo,
);
return tenantInfo;
};
export const useFetchTenantInfo = (isOnMountFetching: boolean = true) => {
const dispatch = useDispatch();
const fetchTenantInfo = useCallback(() => {
dispatch({
type: 'settingModel/getTenantInfo',
});
}, [dispatch]);
useEffect(() => {
if (isOnMountFetching) {
fetchTenantInfo();
}
}, [fetchTenantInfo, isOnMountFetching]);
return fetchTenantInfo;
};
export const useSelectParserList = (): Array<{
value: string;
label: string;
}> => {
const tenantInfo: ITenantInfo = useSelectTenantInfo();
const parserList = useMemo(() => {
const parserArray: Array<string> = tenantInfo?.parser_ids.split(',') ?? [];
return parserArray.map((x) => {
const arr = x.split(':');
return { value: arr[0], label: arr[1] };
});
}, [tenantInfo]);
return parserList;
};
export const useLogout = () => {
const dispatch = useDispatch(); // TODO: clear redux state
const logout = useCallback(async () => {
const retcode = await dispatch<any>({ type: 'loginModel/logout' });
if (retcode === 0) {
authorizationUtil.removeAll();
history.push('/login');
}
}, [dispatch]);
return logout;
};
export const useSaveSetting = () => {
const dispatch = useDispatch();
const saveSetting = useCallback(
(userInfo: { new_password: string } | Partial<IUserInfo>): number => {
return dispatch<any>({ type: 'settingModel/setting', payload: userInfo });
},
[dispatch],
);
return saveSetting;
};
export const useFetchSystemVersion = () => {
const [version, setVersion] = useState('');
const [loading, setLoading] = useState(false);
const fetchSystemVersion = useCallback(async () => {
try {
setLoading(true);
const { data } = await userService.getSystemVersion();
if (data.retcode === 0) {
setVersion(data.data);
setLoading(false);
}
} catch (error) {
setLoading(false);
}
}, []);
return { fetchSystemVersion, version, loading };
};
export const useFetchSystemStatus = () => {
const [systemStatus, setSystemStatus] = useState<ISystemStatus>(
{} as ISystemStatus,
);
const [loading, setLoading] = useState(false);
const fetchSystemStatus = useCallback(async () => {
setLoading(true);
const { data } = await userService.getSystemStatus();
if (data.retcode === 0) {
setSystemStatus(data.data);
setLoading(false);
}
}, []);
return {
systemStatus,
fetchSystemStatus,
loading,
};
};
|