{buckets.length > 1 && (
diff --git a/frontend/components/connectors/aws-s3/bucket-view.tsx b/frontend/components/connectors/aws-s3/bucket-view.tsx
index f2887084c..5e859828f 100644
--- a/frontend/components/connectors/aws-s3/bucket-view.tsx
+++ b/frontend/components/connectors/aws-s3/bucket-view.tsx
@@ -2,6 +2,7 @@
import type { useSyncConnector } from "@/app/api/mutations/useSyncConnector";
import { useS3BucketStatusQuery } from "@/app/api/queries/useS3BucketStatusQuery";
+import { useS3DefaultsQuery } from "@/app/api/queries/useS3DefaultsQuery";
import { SharedBucketView } from "../shared-bucket-view";
export interface S3BucketViewProps {
@@ -25,6 +26,7 @@ export function S3BucketView({
error: bucketsError,
refetch,
} = useS3BucketStatusQuery(connector.connectionId, { enabled: true });
+ const { data: defaults } = useS3DefaultsQuery({ enabled: true });
return (
);
}
diff --git a/frontend/components/connectors/shared-bucket-view.tsx b/frontend/components/connectors/shared-bucket-view.tsx
index e6b91b94e..013ede074 100644
--- a/frontend/components/connectors/shared-bucket-view.tsx
+++ b/frontend/components/connectors/shared-bucket-view.tsx
@@ -2,7 +2,7 @@
import { useQueryClient } from "@tanstack/react-query";
import { ArrowLeft, FileSearch, FolderOpen, RefreshCw } from "lucide-react";
-import { useState } from "react";
+import { useEffect, useRef, useState } from "react";
import { toast } from "sonner";
import type { useSyncConnector } from "@/app/api/mutations/useSyncConnector";
import { useGetSettingsQuery } from "@/app/api/queries/useGetSettingsQuery";
@@ -28,6 +28,7 @@ export interface SharedBucketViewProps {
) => void;
onBack: () => void;
onDone: () => void;
+ initialSelectedBuckets?: string[];
}
export function SharedBucketView({
@@ -41,6 +42,7 @@ export function SharedBucketView({
addTask,
onBack,
onDone,
+ initialSelectedBuckets,
}: SharedBucketViewProps) {
const queryClient = useQueryClient();
const { isAuthenticated, isNoAuthMode } = useAuth();
@@ -53,12 +55,31 @@ export function SharedBucketView({
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 });
};
diff --git a/frontend/enhancements/connectors/ibm-cos/components/bucket-view.tsx b/frontend/enhancements/connectors/ibm-cos/components/bucket-view.tsx
index 326c38b3e..41f8eff2f 100644
--- a/frontend/enhancements/connectors/ibm-cos/components/bucket-view.tsx
+++ b/frontend/enhancements/connectors/ibm-cos/components/bucket-view.tsx
@@ -3,6 +3,7 @@
import type { useSyncConnector } from "@/app/api/mutations/useSyncConnector";
import { SharedBucketView } from "@/components/connectors/shared-bucket-view";
import { useIBMCOSBucketStatusQuery } from "../useIBMCOSBucketStatusQuery";
+import { useIBMCOSDefaultsQuery } from "../useIBMCOSDefaultsQuery";
export interface IBMCOSBucketViewProps {
connector: any;
@@ -25,6 +26,7 @@ export function IBMCOSBucketView({
error: bucketsError,
refetch,
} = useIBMCOSBucketStatusQuery(connector.connectionId, { enabled: true });
+ const { data: defaults } = useIBMCOSDefaultsQuery({ enabled: true });
return (
);
}
diff --git a/frontend/enhancements/connectors/ibm-cos/settings-dialog.tsx b/frontend/enhancements/connectors/ibm-cos/settings-dialog.tsx
index 2dd31dcf9..dadd41c3d 100644
--- a/frontend/enhancements/connectors/ibm-cos/settings-dialog.tsx
+++ b/frontend/enhancements/connectors/ibm-cos/settings-dialog.tsx
@@ -136,8 +136,8 @@ export default function IBMCOSSettingsDialog({
toast.success("IBM Cloud Object Storage 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/enhancements/connectors/ibm-cos/settings-form.tsx b/frontend/enhancements/connectors/ibm-cos/settings-form.tsx
index 179e4de76..71b60e7ff 100644
--- a/frontend/enhancements/connectors/ibm-cos/settings-form.tsx
+++ b/frontend/enhancements/connectors/ibm-cos/settings-form.tsx
@@ -275,9 +275,9 @@ export function IBMCOSSettingsForm({
{buckets.length > 1 && (