mirror of
https://github.com/langgenius/dify.git
synced 2025-12-19 06:02:20 +00:00
Signed-off-by: -LAN- <laipz8200@outlook.com> Co-authored-by: twwu <twwu@dify.ai> Co-authored-by: crazywoola <100913391+crazywoola@users.noreply.github.com> Co-authored-by: jyong <718720800@qq.com> Co-authored-by: Wu Tianwei <30284043+WTW0313@users.noreply.github.com> Co-authored-by: QuantumGhost <obelisk.reg+git@gmail.com> Co-authored-by: lyzno1 <yuanyouhuilyz@gmail.com> Co-authored-by: quicksand <quicksandzn@gmail.com> Co-authored-by: Jyong <76649700+JohnJyong@users.noreply.github.com> Co-authored-by: lyzno1 <92089059+lyzno1@users.noreply.github.com> Co-authored-by: zxhlyh <jasonapring2015@outlook.com> Co-authored-by: Yongtao Huang <yongtaoh2022@gmail.com> Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> Co-authored-by: Joel <iamjoel007@gmail.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: nite-knite <nkCoding@gmail.com> Co-authored-by: Hanqing Zhao <sherry9277@gmail.com> Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> Co-authored-by: Harry <xh001x@hotmail.com>
55 lines
1.7 KiB
TypeScript
55 lines
1.7 KiB
TypeScript
import { type OnlineDriveFile, OnlineDriveFileType } from '@/models/pipeline'
|
|
import type { OnlineDriveData } from '@/types/pipeline'
|
|
|
|
export const isFile = (type: 'file' | 'folder'): boolean => {
|
|
return type === 'file'
|
|
}
|
|
|
|
export const isBucketListInitiation = (data: OnlineDriveData[], prefix: string[], bucket: string): boolean => {
|
|
if (bucket || prefix.length > 0) return false
|
|
const hasBucket = data.every(item => !!item.bucket)
|
|
return hasBucket && (data.length > 1 || (data.length === 1 && !!data[0].bucket && data[0].files.length === 0))
|
|
}
|
|
|
|
export const convertOnlineDriveData = (data: OnlineDriveData[], prefix: string[], bucket: string): {
|
|
fileList: OnlineDriveFile[],
|
|
isTruncated: boolean,
|
|
nextPageParameters: Record<string, any>
|
|
hasBucket: boolean
|
|
} => {
|
|
const fileList: OnlineDriveFile[] = []
|
|
let isTruncated = false
|
|
let nextPageParameters: Record<string, any> = {}
|
|
let hasBucket = false
|
|
|
|
if (data.length === 0)
|
|
return { fileList, isTruncated, nextPageParameters, hasBucket }
|
|
|
|
if (isBucketListInitiation(data, prefix, bucket)) {
|
|
data.forEach((item) => {
|
|
fileList.push({
|
|
id: item.bucket,
|
|
name: item.bucket,
|
|
type: OnlineDriveFileType.bucket,
|
|
})
|
|
})
|
|
hasBucket = true
|
|
}
|
|
else {
|
|
data[0].files.forEach((file) => {
|
|
const { id, name, size, type } = file
|
|
const isFileType = isFile(type)
|
|
fileList.push({
|
|
id,
|
|
name,
|
|
size: isFileType ? size : undefined,
|
|
type: isFileType ? OnlineDriveFileType.file : OnlineDriveFileType.folder,
|
|
})
|
|
})
|
|
isTruncated = data[0].is_truncated ?? false
|
|
nextPageParameters = data[0].next_page_parameters ?? {}
|
|
hasBucket = !!data[0].bucket
|
|
}
|
|
return { fileList, isTruncated, nextPageParameters, hasBucket }
|
|
}
|