{buckets.length > 1 && (
diff --git a/frontend/app/settings/_components/s3-settings-dialog.tsx b/frontend/app/settings/_components/s3-settings-dialog.tsx
index 942dcbdd0..5172be890 100644
--- a/frontend/app/settings/_components/s3-settings-dialog.tsx
+++ b/frontend/app/settings/_components/s3-settings-dialog.tsx
@@ -130,8 +130,8 @@ export default function S3SettingsDialog({
toast.success("Amazon S3 configured", {
description:
selectedBuckets.length > 0
- ? `Will ingest from: ${selectedBuckets.join(", ")}`
- : "Will auto-discover and ingest all accessible buckets.",
+ ? `Filtered to: ${selectedBuckets.join(", ")}`
+ : "All accessible buckets are included.",
icon:
,
});
diff --git a/frontend/app/settings/_components/s3-settings-form.tsx b/frontend/app/settings/_components/s3-settings-form.tsx
index 523e8cf64..f8696a3f6 100644
--- a/frontend/app/settings/_components/s3-settings-form.tsx
+++ b/frontend/app/settings/_components/s3-settings-form.tsx
@@ -170,9 +170,9 @@ export function S3SettingsForm({
{buckets.length > 1 && (
diff --git a/frontend/app/upload/[provider]/page.tsx b/frontend/app/upload/[provider]/page.tsx
index c964fef9c..e36575d2a 100644
--- a/frontend/app/upload/[provider]/page.tsx
+++ b/frontend/app/upload/[provider]/page.tsx
@@ -9,13 +9,15 @@ import {
RefreshCw,
} from "lucide-react";
import { useParams, useRouter } from "next/navigation";
-import { useRef, useState } from "react";
+import { useEffect, useRef, useState } from "react";
import { toast } from "sonner";
import { useSyncConnector } from "@/app/api/mutations/useSyncConnector";
import { useGetConnectorsQuery } from "@/app/api/queries/useGetConnectorsQuery";
import { useGetConnectorTokenQuery } from "@/app/api/queries/useGetConnectorTokenQuery";
import { useIBMCOSBucketStatusQuery } from "@/app/api/queries/useIBMCOSBucketStatusQuery";
+import { useIBMCOSDefaultsQuery } from "@/app/api/queries/useIBMCOSDefaultsQuery";
import { useS3BucketStatusQuery } from "@/app/api/queries/useS3BucketStatusQuery";
+import { useS3DefaultsQuery } from "@/app/api/queries/useS3DefaultsQuery";
import { type CloudFile, UnifiedCloudPicker } from "@/components/cloud-picker";
import { IngestSettings } from "@/components/cloud-picker/ingest-settings";
import { getIngestChunkSettingsError } from "@/components/cloud-picker/types";
@@ -49,6 +51,7 @@ function BucketView({
addTask,
onBack,
onDone,
+ initialSelectedBuckets,
}: {
connector: any;
buckets: Array<{ name: string; ingested_count: number }> | undefined;
@@ -60,17 +63,37 @@ function BucketView({
addTask: (id: string) => void;
onBack: () => void;
onDone: () => void;
+ initialSelectedBuckets?: string[];
}) {
const queryClient = useQueryClient();
const [selectedBuckets, setSelectedBuckets] = useState>(
new Set(),
);
+ const hasAppliedInitial = useRef(false);
const [ingestSettings, setIngestSettings] = useSessionIngestSettings();
const [isSettingsOpen, setIsSettingsOpen] = useState(false);
const [browseDialogBucket, setBrowseDialogBucket] = useState(
null,
);
+ useEffect(() => {
+ if (
+ !hasAppliedInitial.current &&
+ buckets?.length &&
+ initialSelectedBuckets?.length
+ ) {
+ hasAppliedInitial.current = true;
+ if (selectedBuckets.size === 0) {
+ const valid = initialSelectedBuckets.filter((name) =>
+ buckets.some((b) => b.name === name),
+ );
+ if (valid.length) {
+ setSelectedBuckets(new Set(valid));
+ }
+ }
+ }
+ }, [buckets, initialSelectedBuckets]); // eslint-disable-line react-hooks/exhaustive-deps
+
const invalidate = () => {
queryClient.invalidateQueries({ queryKey: invalidateQueryKey });
};
@@ -318,6 +341,7 @@ function IBMCOSBucketView({
isLoading,
refetch,
} = useIBMCOSBucketStatusQuery(connector.connectionId, { enabled: true });
+ const { data: defaults } = useIBMCOSDefaultsQuery({ enabled: true });
return (
);
}
@@ -356,6 +385,7 @@ function S3BucketView({
error: bucketsError,
refetch,
} = useS3BucketStatusQuery(connector.connectionId, { enabled: true });
+ const { data: defaults } = useS3DefaultsQuery({ enabled: true });
return (
);
}