mirror of
https://github.com/infiniflow/ragflow.git
synced 2026-01-23 03:26:53 +08:00
### What problem does this PR solve? Feat: Refactoring the documentation page using shadcn. #10427 ### Type of change - [x] New Feature (non-breaking change which adds functionality)
146 lines
3.7 KiB
TypeScript
146 lines
3.7 KiB
TypeScript
import {
|
|
useSetModalState,
|
|
useShowDeleteConfirm,
|
|
useTranslate,
|
|
} from '@/hooks/common-hooks';
|
|
import {
|
|
useCreateSystemToken,
|
|
useFetchManualSystemTokenList,
|
|
useFetchSystemTokenList,
|
|
useRemoveSystemToken,
|
|
} from '@/hooks/use-user-setting-request';
|
|
import { IStats } from '@/interfaces/database/chat';
|
|
import { useQueryClient } from '@tanstack/react-query';
|
|
import { message } from 'antd';
|
|
import { useCallback } from 'react';
|
|
|
|
export const useOperateApiKey = (idKey: string, dialogId?: string) => {
|
|
const { removeToken } = useRemoveSystemToken();
|
|
const { createToken, loading: creatingLoading } = useCreateSystemToken();
|
|
const { data: tokenList, loading: listLoading } = useFetchSystemTokenList();
|
|
|
|
const showDeleteConfirm = useShowDeleteConfirm();
|
|
|
|
const onRemoveToken = (token: string) => {
|
|
showDeleteConfirm({
|
|
onOk: () => removeToken(token),
|
|
});
|
|
};
|
|
|
|
const onCreateToken = useCallback(() => {
|
|
createToken({ [idKey]: dialogId });
|
|
}, [createToken, idKey, dialogId]);
|
|
|
|
return {
|
|
removeToken: onRemoveToken,
|
|
createToken: onCreateToken,
|
|
tokenList,
|
|
creatingLoading,
|
|
listLoading,
|
|
};
|
|
};
|
|
|
|
type ChartStatsType = {
|
|
[k in keyof IStats]: Array<{ xAxis: string; yAxis: number }>;
|
|
};
|
|
|
|
export const useSelectChartStatsList = (): ChartStatsType => {
|
|
const queryClient = useQueryClient();
|
|
const data = queryClient.getQueriesData({ queryKey: ['fetchStats'] });
|
|
const stats: IStats = (data.length > 0 ? data[0][1] : {}) as IStats;
|
|
|
|
return Object.keys(stats).reduce((pre, cur) => {
|
|
const item = stats[cur as keyof IStats];
|
|
if (item.length > 0) {
|
|
pre[cur as keyof IStats] = item.map((x) => ({
|
|
xAxis: x[0] as string,
|
|
yAxis: x[1] as number,
|
|
}));
|
|
}
|
|
return pre;
|
|
}, {} as ChartStatsType);
|
|
};
|
|
|
|
export const useShowTokenEmptyError = () => {
|
|
const { t } = useTranslate('chat');
|
|
|
|
const showTokenEmptyError = useCallback(() => {
|
|
message.error(t('tokenError'));
|
|
}, [t]);
|
|
return { showTokenEmptyError };
|
|
};
|
|
|
|
export const useShowBetaEmptyError = () => {
|
|
const { t } = useTranslate('chat');
|
|
|
|
const showBetaEmptyError = useCallback(() => {
|
|
message.error(t('betaError'));
|
|
}, [t]);
|
|
return { showBetaEmptyError };
|
|
};
|
|
|
|
const useFetchTokenListBeforeOtherStep = () => {
|
|
const { showTokenEmptyError } = useShowTokenEmptyError();
|
|
const { showBetaEmptyError } = useShowBetaEmptyError();
|
|
|
|
const { data: tokenList, fetchSystemTokenList } =
|
|
useFetchManualSystemTokenList();
|
|
|
|
let token = '',
|
|
beta = '';
|
|
|
|
if (Array.isArray(tokenList) && tokenList.length > 0) {
|
|
token = tokenList[0].token;
|
|
beta = tokenList[0].beta;
|
|
}
|
|
|
|
token =
|
|
Array.isArray(tokenList) && tokenList.length > 0 ? tokenList[0].token : '';
|
|
|
|
const handleOperate = useCallback(async () => {
|
|
const ret = await fetchSystemTokenList();
|
|
const list = ret;
|
|
if (Array.isArray(list) && list.length > 0) {
|
|
if (!list[0].beta) {
|
|
showBetaEmptyError();
|
|
return false;
|
|
}
|
|
return list[0]?.token;
|
|
} else {
|
|
showTokenEmptyError();
|
|
return false;
|
|
}
|
|
}, [fetchSystemTokenList, showBetaEmptyError, showTokenEmptyError]);
|
|
|
|
return {
|
|
token,
|
|
beta,
|
|
handleOperate,
|
|
};
|
|
};
|
|
|
|
export const useShowEmbedModal = () => {
|
|
const {
|
|
visible: embedVisible,
|
|
hideModal: hideEmbedModal,
|
|
showModal: showEmbedModal,
|
|
} = useSetModalState();
|
|
|
|
const { handleOperate, token, beta } = useFetchTokenListBeforeOtherStep();
|
|
|
|
const handleShowEmbedModal = useCallback(async () => {
|
|
const succeed = await handleOperate();
|
|
if (succeed) {
|
|
showEmbedModal();
|
|
}
|
|
}, [handleOperate, showEmbedModal]);
|
|
|
|
return {
|
|
showEmbedModal: handleShowEmbedModal,
|
|
hideEmbedModal,
|
|
embedVisible,
|
|
embedToken: token,
|
|
beta,
|
|
};
|
|
};
|