+
@@ -366,12 +366,9 @@ export default function UploadProviderPage() {
disabled={selectedFiles.length === 0 || isIngesting}
>
{isIngesting ? (
- <>
- Ingesting {selectedFiles.length} file
- {selectedFiles.length > 1 ? "s" : ""}...
- >
+ <>Ingesting {selectedFiles.length} Files...>
) : (
- <>Ingest files>
+ <>Start ingest>
)}
diff --git a/frontend/src/components/cloud-picker/file-item.tsx b/frontend/src/components/cloud-picker/file-item.tsx
index 3f6b5ab5..e9bdec38 100644
--- a/frontend/src/components/cloud-picker/file-item.tsx
+++ b/frontend/src/components/cloud-picker/file-item.tsx
@@ -1,10 +1,15 @@
"use client";
import { Badge } from "@/components/ui/badge";
-import { FileText, Folder, Trash } from "lucide-react";
+import { FileText, Folder, Trash, Trash2 } from "lucide-react";
import { CloudFile } from "./types";
+import GoogleDriveIcon from "@/app/settings/icons/google-drive-icon";
+import SharePointIcon from "@/app/settings/icons/share-point-icon";
+import OneDriveIcon from "@/app/settings/icons/one-drive-icon";
+import { Button } from "@/components/ui/button";
interface FileItemProps {
+ provider: string;
file: CloudFile;
onRemove: (fileId: string) => void;
}
@@ -41,27 +46,43 @@ const formatFileSize = (bytes?: number) => {
return `${(bytes / Math.pow(1024, i)).toFixed(1)} ${sizes[i]}`;
};
-export const FileItem = ({ file, onRemove }: FileItemProps) => (
+const getProviderIcon = (provider: string) => {
+ switch (provider) {
+ case "google_drive":
+ return
;
+ case "onedrive":
+ return
;
+ case "sharepoint":
+ return
;
+ default:
+ return
;
+ }
+};
+
+export const FileItem = ({ file, onRemove, provider }: FileItemProps) => (
- {getFileIcon(file.mimeType)}
+ {provider ? getProviderIcon(provider) : getFileIcon(file.mimeType)}
{file.name}
{getMimeTypeLabel(file.mimeType)}
-
+
{formatFileSize(file.size) || "—"}
-
- onRemove(file.id)}
- />
+ >
+
+
);
diff --git a/frontend/src/components/cloud-picker/file-list.tsx b/frontend/src/components/cloud-picker/file-list.tsx
index 775d78c4..b584249a 100644
--- a/frontend/src/components/cloud-picker/file-list.tsx
+++ b/frontend/src/components/cloud-picker/file-list.tsx
@@ -5,12 +5,14 @@ import { CloudFile } from "./types";
import { FileItem } from "./file-item";
interface FileListProps {
+ provider: string;
files: CloudFile[];
onClearAll: () => void;
onRemoveFile: (fileId: string) => void;
}
export const FileList = ({
+ provider,
files,
onClearAll,
onRemoveFile,
@@ -22,19 +24,25 @@ export const FileList = ({
return (
-
Added files
+
Added files ({files.length})
- {files.map(file => (
-
+ {files.map((file) => (
+
))}
diff --git a/frontend/src/components/cloud-picker/ingest-settings.tsx b/frontend/src/components/cloud-picker/ingest-settings.tsx
index d5843a2a..8c72ce6b 100644
--- a/frontend/src/components/cloud-picker/ingest-settings.tsx
+++ b/frontend/src/components/cloud-picker/ingest-settings.tsx
@@ -44,7 +44,7 @@ export const IngestSettings = ({
@@ -65,7 +65,7 @@ export const IngestSettings = ({
+ onChange={(e) =>
handleSettingsChange({
chunkSize: parseInt(e.target.value) || 0,
})
@@ -77,7 +77,7 @@ export const IngestSettings = ({
+ onChange={(e) =>
handleSettingsChange({
chunkOverlap: parseInt(e.target.value) || 0,
})
@@ -95,7 +95,7 @@ export const IngestSettings = ({
+ onCheckedChange={(checked) =>
handleSettingsChange({ ocr: checked })
}
/>
@@ -112,7 +112,7 @@ export const IngestSettings = ({
+ onCheckedChange={(checked) =>
handleSettingsChange({ pictureDescriptions: checked })
}
/>
@@ -126,7 +126,7 @@ export const IngestSettings = ({
+ onChange={(e) =>
handleSettingsChange({ embeddingModel: e.target.value })
}
placeholder="text-embedding-3-small"
diff --git a/frontend/src/components/cloud-picker/unified-cloud-picker.tsx b/frontend/src/components/cloud-picker/unified-cloud-picker.tsx
index fd77698f..0a4699af 100644
--- a/frontend/src/components/cloud-picker/unified-cloud-picker.tsx
+++ b/frontend/src/components/cloud-picker/unified-cloud-picker.tsx
@@ -116,7 +116,7 @@ export const UnifiedCloudPicker = ({
const handler = createProviderHandler(
provider,
accessToken,
- isOpen => {
+ (isOpen) => {
setIsPickerOpen(isOpen);
onPickerStateChange?.(isOpen);
},
@@ -126,8 +126,8 @@ export const UnifiedCloudPicker = ({
handler.openPicker((files: CloudFile[]) => {
// Merge new files with existing ones, avoiding duplicates
- const existingIds = new Set(selectedFiles.map(f => f.id));
- const newFiles = files.filter(f => !existingIds.has(f.id));
+ const existingIds = new Set(selectedFiles.map((f) => f.id));
+ const newFiles = files.filter((f) => !existingIds.has(f.id));
onFileSelected([...selectedFiles, ...newFiles]);
});
} catch (error) {
@@ -138,7 +138,7 @@ export const UnifiedCloudPicker = ({
};
const handleRemoveFile = (fileId: string) => {
- const updatedFiles = selectedFiles.filter(file => file.id !== fileId);
+ const updatedFiles = selectedFiles.filter((file) => file.id !== fileId);
onFileSelected(updatedFiles);
};
@@ -179,6 +179,7 @@ export const UnifiedCloudPicker = ({
/>