40 lines
1.2 KiB
TypeScript

import { type OnlineDriveFile, OnlineDriveFileType } from '@/models/pipeline'
import type { OnlineDriveData } from '@/types/pipeline'
const filePathRegex = /^(?:.*\/)?[^\/]+\.[^\/\.]+$/
export const isFile = (path: string): boolean => {
return filePathRegex.test(path)
}
export const hasBuckets = (data: OnlineDriveData[]): boolean => {
return data.length > 1 || (data.length === 1 && data[0].files.length === 0)
}
export const convertOnlineDriveDataToFileList = (data: OnlineDriveData[]): OnlineDriveFile[] => {
const fileList: OnlineDriveFile[] = []
if (hasBuckets(data)) {
data.forEach((item) => {
fileList.push({
key: item.bucket,
displayName: item.bucket,
type: OnlineDriveFileType.bucket,
})
})
}
else {
data[0].files.forEach((file) => {
const isFileType = isFile(file.key)
const filePathList = file.key.split('/')
fileList.push({
key: file.key,
displayName: `${isFileType ? filePathList.pop() : filePathList[filePathList.length - 2]}${isFileType ? '' : '/'}`,
size: isFileType ? file.size : undefined,
type: isFileType ? OnlineDriveFileType.file : OnlineDriveFileType.folder,
})
})
}
return fileList
}