fix(archive view): archive file view without dir info display abnormally

This commit is contained in:
Darren Yu 2025-09-04 11:05:16 +08:00
parent e53eb86a32
commit 9829771dbd
No known key found for this signature in database
GPG Key ID: 2D69AA5646405984

View File

@ -105,7 +105,41 @@ const ArchivePreview = () => {
)
.then((res) => {
if (res.files) {
setFiles(res.files);
// 补齐目录
const allItems: ArchivedFile[] = [];
const allDirs = new Set<string>();
res.files.forEach((item) => {
allItems.push(item);
if (item.is_directory) {
allDirs.add(item.name);
} else {
const dirElements = item.name.split("/");
for (let i = 1; i < dirElements.length; i++) {
const dirName = dirElements.slice(0, i).join("/");
if (!allDirs.has(dirName)) {
allDirs.add(dirName);
allItems.push({
name: dirName,
size: 0,
updated_at: "1970-01-01T00:00:00Z",
is_directory: true,
});
}
}
}
});
// 排序文件
// 先目录,后文件,分别按名称排序
allItems.sort((a, b) => {
if (a.is_directory && !b.is_directory) return -1;
if (!a.is_directory && b.is_directory) return 1;
return a.name.localeCompare(b.name);
});
setFiles(allItems);
}
})
.catch(() => {