chore: dataset fe adjusting (#1833)

This commit is contained in:
Finley Ge
2024-06-24 19:04:42 +08:00
committed by GitHub
parent 4a33e04a08
commit 9d29b471bc
5 changed files with 490 additions and 433 deletions

View File

@@ -1,4 +1,10 @@
import { getDatasetPaths, putDatasetById } from '@/web/core/dataset/api';
import {
getDatasetPaths,
putDatasetById,
getDatasets,
getDatasetById,
delDatasetById
} from '@/web/core/dataset/api';
import { useDatasetStore } from '@/web/core/dataset/store/dataset';
import {
GetResourceFolderListProps,
@@ -9,18 +15,28 @@ import { useRouter } from 'next/router';
import React, { useCallback, useState } from 'react';
import { createContext } from 'use-context-selector';
import { useI18n } from '@/web/context/I18n';
import { useRequest2 } from '@fastgpt/web/hooks/useRequest';
import { useRequest, useRequest2 } from '@fastgpt/web/hooks/useRequest';
import { DatasetUpdateBody } from '@fastgpt/global/core/dataset/api';
import dynamic from 'next/dynamic';
import { DatasetTypeEnum } from '@fastgpt/global/core/dataset/constants';
import { DatasetItemType } from '@fastgpt/global/core/dataset/type';
import { EditResourceInfoFormType } from '@/components/common/Modal/EditResourceModal';
import { useSystemStore } from '@/web/common/system/useSystemStore';
import { useTranslation } from 'react-i18next';
const MoveModal = dynamic(() => import('@/components/common/folder/MoveModal'));
export type DatasetContextType = {
refetchDatasets: () => void;
refetchPaths: () => void;
refetchFolderDetail: () => void;
isFetchingDatasets: boolean;
setMoveDatasetId: (id: string) => void;
paths: ParentTreePathItemType[];
folderDetail?: DatasetItemType;
editedDataset?: EditResourceInfoFormType;
setEditedDataset: (data?: EditResourceInfoFormType) => void;
onDelDataset: (id: string) => Promise<void>;
};
export const DatasetContext = createContext<DatasetContextType>({
@@ -28,22 +44,39 @@ export const DatasetContext = createContext<DatasetContextType>({
isFetchingDatasets: false,
setMoveDatasetId: () => {},
refetchPaths: () => {},
paths: []
paths: [],
refetchFolderDetail: () => {},
folderDetail: {} as any,
editedDataset: {} as any,
setEditedDataset: () => {},
onDelDataset: () => Promise.resolve()
});
function DatasetContextProvider({ children }: { children: React.ReactNode }) {
const router = useRouter();
const { commonT } = useI18n();
const { t } = useTranslation();
const { parentId = null } = router.query as { parentId?: string | null };
const { loadMyDatasets } = useDatasetStore();
const { myDatasets, loadMyDatasets } = useDatasetStore();
const getDatasetFolderList = useCallback(async ({ parentId }: GetResourceFolderListProps) => {
const res = await getDatasetPaths(parentId);
return res.map((item) => ({
id: item.parentId,
name: item.parentName
}));
const { data: folderDetail, runAsync: refetchFolderDetail } = useRequest2(
() => (parentId ? getDatasetById(parentId) : Promise.resolve(undefined)),
{
manual: false,
refreshDeps: [parentId, myDatasets]
}
);
const getDatasetFolderList = useCallback(({ parentId }: GetResourceFolderListProps) => {
return getDatasets({
parentId,
type: DatasetTypeEnum.folder
}).then((res) => {
return res.map((item) => ({
id: item._id,
name: item.name
}));
});
}, []);
const { data: paths = [], runAsync: refetchPaths } = useRequest2(
@@ -82,12 +115,24 @@ function DatasetContextProvider({ children }: { children: React.ReactNode }) {
[moveDatasetId, onUpdateDataset]
);
const [editedDataset, setEditedDataset] = useState<EditResourceInfoFormType>();
const { runAsync: onDelDataset } = useRequest2(delDatasetById, {
successToast: t('common.Delete Success'),
errorToast: t('dataset.Delete Dataset Error')
});
const contextValue = {
refetchDatasets,
isFetchingDatasets,
setMoveDatasetId,
paths,
refetchPaths
refetchPaths,
refetchFolderDetail,
folderDetail,
editedDataset,
setEditedDataset,
onDelDataset
};
return (