feat: create folder #345 (#518)

### What problem does this PR solve?

feat: create folder
feat: ensure that all files in the current folder can be correctly
requested after renaming the folder
#345 

### Type of change

- [x] New Feature (non-breaking change which adds functionality)
This commit is contained in:
balibabu
2024-04-24 11:07:22 +08:00
committed by GitHub
parent 369400c483
commit 2d228dbf7f
10 changed files with 285 additions and 47 deletions

View File

@@ -1,7 +1,13 @@
import { useSetModalState, useTranslate } from '@/hooks/commonHooks';
import {
useSetModalState,
useShowDeleteConfirm,
useTranslate,
} from '@/hooks/commonHooks';
import {
useCreateFolder,
useFetchFileList,
useFetchParentFolderList,
useRemoveFile,
useRenameFile,
useSelectFileList,
useSelectParentFolderList,
@@ -144,7 +150,7 @@ export const useRenameCurrentFile = () => {
const onFileRenameOk = useCallback(
async (name: string) => {
const ret = await renameFile(file.id, name);
const ret = await renameFile(file.id, name, file.parent_id);
if (ret === 0) {
hideFileRenameModal();
@@ -191,3 +197,56 @@ export const useSelectBreadcrumbItems = () => {
path: `/file?folderId=${x.id}`,
}));
};
export const useHandleCreateFolder = () => {
const {
visible: folderCreateModalVisible,
hideModal: hideFolderCreateModal,
showModal: showFolderCreateModal,
} = useSetModalState();
const createFolder = useCreateFolder();
const id = useGetFolderId();
const onFolderCreateOk = useCallback(
async (name: string) => {
const ret = await createFolder(id, name);
if (ret === 0) {
hideFolderCreateModal();
}
},
[createFolder, hideFolderCreateModal, id],
);
const loading = useOneNamespaceEffectsLoading('fileManager', [
'createFolder',
]);
return {
folderCreateLoading: loading,
onFolderCreateOk,
folderCreateModalVisible,
hideFolderCreateModal,
showFolderCreateModal,
};
};
export const useHandleDeleteFile = (fileIds: string[]) => {
const removeDocument = useRemoveFile();
const showDeleteConfirm = useShowDeleteConfirm();
const parentId = useGetFolderId();
const handleRemoveFile = () => {
showDeleteConfirm({
onOk: () => {
return removeDocument(fileIds, parentId);
},
});
};
return { handleRemoveFile };
};
export const useSelectFileListLoading = () => {
return useOneNamespaceEffectsLoading('fileManager', ['listFile']);
};