专案完成

This commit is contained in:
‘Liammcl’
2025-01-04 20:09:06 +08:00
parent 9a60a688f3
commit 780e7519c1
12 changed files with 2688 additions and 63 deletions

View File

@@ -362,7 +362,6 @@ const StorageManager = () => {
setNewFileName(selectedFile.name);
setIsRenaming(true);
};
// 添加文件删除功能
const handleDelete = async (fileName) => {
try {
const { error } = await supabase.storage.from("file").remove([fileName]);
@@ -370,29 +369,22 @@ const StorageManager = () => {
message.success("文件删除成功");
// 直接从本地状态中移除被删除的文件
setDisplayFiles(prev => prev.filter(file => file.name !== fileName));
// 如果删除的是当前选中的文件,清空预览
if (selectedFile?.name === fileName) {
setSelectedFile(null);
setFileContent("");
}
// 更新文件类型统计
// 注意typeStats 是通过 useMemo 自动计算的,不需要手动更新
} catch (error) {
message.error(`删除失败: ${error.message}`);
}
};
// 判断是否有过滤条件
const hasFilters = useMemo(() => {
return searchText !== '' || selectedType !== '全部';
}, [searchText, selectedType]);
// 加载更多数据
const loadMoreFiles = () => {
if (!hasMore || loading || hasFilters) return; // 有过滤条件不加载更多
fetchAllFiles(false);
@@ -403,35 +395,17 @@ const StorageManager = () => {
fetchAllFiles(true);
}, []);
// 搜索或筛选时重新加载
const handleSearch = (value) => {
setSearchText(value);
// 不需要重新调用 fetchAllFiles因为搜索是在前端过滤
};
const handleTypeChange = (type) => {
setSelectedType(type);
// 不需要重新调用 fetchAllFiles因为类型筛选是在前端过滤
};
// 处理文件名中的空格
const handleFileName = (fileName) => {
// 替换空格为下划线或编码空格
return fileName.replace(/\s+/g, '_');
};
// 修改文件类型判断
const getFileType = (mimetype) => {
if (!mimetype) return '其他';
for (const [type, mimetypes] of Object.entries(FILE_TYPES)) {
if (mimetypes.some(t => mimetype.startsWith(t) || mimetype === t)) {
return type;
}
}
return '其他';
};
// 渲染加载状态
const LoadingSpinner = () => (