@lobehub/chat
Version:
Lobe Chat - an open-source, high-performance chatbot framework that supports speech synthesis, multimodal, and extensible Function Call plugin system. Supports one-click free deployment of your private ChatGPT/LLM web application.
59 lines (45 loc) • 1.86 kB
text/typescript
// import { FileStore } from '../../store';
import { FilesStoreState } from '@/store/file/initialState';
import { FileUploadStatus } from '@/types/files/upload';
const uploadStatusArray = new Set(['uploading', 'pending', 'processing']);
const dockFileList = (s: FilesStoreState) => s.dockUploadFileList;
const dockRawFileList = (s: FilesStoreState) => s.dockUploadFileList.map((item) => item.file);
const getFileById = (id?: string | null) => (s: FilesStoreState) => {
if (!id) return;
return s.fileList.find((item) => item.id === id);
};
const isUploadingFiles = (s: FilesStoreState) =>
s.dockUploadFileList.some((file) => uploadStatusArray.has(file.status));
const overviewUploadingStatus = (s: FilesStoreState): FileUploadStatus => {
if (s.dockUploadFileList.length === 0) return 'pending';
if (s.dockUploadFileList.some((file) => uploadStatusArray.has(file.status))) {
return 'uploading';
}
return 'success';
};
const overviewUploadingProgress = (s: FilesStoreState) => {
const uploadFiles = s.dockUploadFileList.filter(
(file) => file.status === 'uploading' || file.status === 'pending',
);
if (uploadFiles.length === 0) return 100;
const totalPercent = uploadFiles.length * 100;
const currentPercent = uploadFiles.reduce(
(acc, file) => acc + (file.uploadState?.progress || 0),
0,
);
return (currentPercent / totalPercent) * 100;
};
const isCreatingFileParseTask = (id: string) => (s: FilesStoreState) =>
s.creatingChunkingTaskIds.includes(id);
const isCreatingChunkEmbeddingTask = (id: string) => (s: FilesStoreState) =>
s.creatingEmbeddingTaskIds.includes(id);
export const fileManagerSelectors = {
dockFileList,
dockRawFileList,
getFileById,
isCreatingChunkEmbeddingTask,
isCreatingFileParseTask,
isUploadingFiles,
overviewUploadingProgress,
overviewUploadingStatus,
};