### What problem does this PR solve? Feat: Delete useless request hooks. #10427 ### Type of change - [x] New Feature (non-breaking change which adds functionality)
91 lines
2.5 KiB
TypeScript
91 lines
2.5 KiB
TypeScript
import { useFetchTokenListBeforeOtherStep } from '@/components/embed-dialog/use-show-embed-dialog';
|
|
import { SharedFrom } from '@/constants/chat';
|
|
import { useShowDeleteConfirm } from '@/hooks/common-hooks';
|
|
import {
|
|
useCreateSystemToken,
|
|
useFetchSystemTokenList,
|
|
useRemoveSystemToken,
|
|
} from '@/hooks/use-user-setting-request';
|
|
import { IStats } from '@/interfaces/database/chat';
|
|
import { useQueryClient } from '@tanstack/react-query';
|
|
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);
|
|
};
|
|
|
|
const getUrlWithToken = (token: string, from: string = 'chat') => {
|
|
const { protocol, host } = window.location;
|
|
return `${protocol}//${host}/chat/share?shared_id=${token}&from=${from}`;
|
|
};
|
|
|
|
export const usePreviewChat = (idKey: string) => {
|
|
const { handleOperate } = useFetchTokenListBeforeOtherStep();
|
|
|
|
const open = useCallback(
|
|
(t: string) => {
|
|
window.open(
|
|
getUrlWithToken(
|
|
t,
|
|
idKey === 'canvasId' ? SharedFrom.Agent : SharedFrom.Chat,
|
|
),
|
|
'_blank',
|
|
);
|
|
},
|
|
[idKey],
|
|
);
|
|
|
|
const handlePreview = useCallback(async () => {
|
|
const token = await handleOperate();
|
|
if (token) {
|
|
open(token);
|
|
}
|
|
}, [handleOperate, open]);
|
|
|
|
return {
|
|
handlePreview,
|
|
};
|
|
};
|