Skip to content

Commit 1c52697

Browse files
authored
feat: apply selected files to filter (#2058)
* apply selected files to filter * rd fix
1 parent 89769ff commit 1c52697

2 files changed

Lines changed: 23 additions & 4 deletions

File tree

frontend/app/knowledge/page.tsx

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -138,9 +138,22 @@ function SearchPage() {
138138
setRecentTasksExpanded,
139139
selectTask,
140140
} = useTask();
141-
const { parsedFilterData, queryOverride, selectedFilter } =
142-
useKnowledgeFilter();
141+
const {
142+
parsedFilterData,
143+
queryOverride,
144+
selectedFilter,
145+
setSelectedSources,
146+
} = useKnowledgeFilter();
143147
const [selectedRows, setSelectedRows] = useState<File[]>([]);
148+
149+
// Keep the filter context aware of checked rows so "Create New Filter"
150+
// can pre-populate its sources from the current selection.
151+
useEffect(() => {
152+
setSelectedSources(
153+
selectedRows.flatMap((row) => (row.filename ? [row.filename] : [])),
154+
);
155+
return () => setSelectedSources([]);
156+
}, [selectedRows, setSelectedSources]);
144157
const [showBulkDeleteDialog, setShowBulkDeleteDialog] = useState(false);
145158
const lastErrorRef = useRef<string | null>(null);
146159
const hasInitializedFailedFilesRef = useRef(false);

frontend/contexts/knowledge-filter-context.tsx

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,9 @@ interface KnowledgeFilterContextType {
4949
endCreateMode: () => void;
5050
queryOverride: string;
5151
setQueryOverride: (query: string) => void;
52+
/** Filenames checked in the knowledge table; seeds data_sources on create. */
53+
selectedSources: string[];
54+
setSelectedSources: (sources: string[]) => void;
5255
}
5356

5457
const KnowledgeFilterContext = createContext<
@@ -82,6 +85,7 @@ export function KnowledgeFilterProvider({
8285
);
8386
const [createMode, setCreateMode] = useState(false);
8487
const [queryOverride, setQueryOverride] = useState("");
88+
const [selectedSources, setSelectedSources] = useState<string[]>([]);
8589

8690
const setSelectedFilter = (filter: KnowledgeFilter | null) => {
8791
setSelectedFilterState(filter);
@@ -145,14 +149,14 @@ export function KnowledgeFilterProvider({
145149
}, []);
146150

147151
const startCreateMode = () => {
148-
// Initialize defaults
152+
// Initialize defaults; checked table rows pre-populate the sources filter
149153
setPanelMode("filters");
150154
setCreateMode(true);
151155
setSelectedFilterState(null);
152156
setParsedFilterData({
153157
query: "",
154158
filters: {
155-
data_sources: ["*"],
159+
data_sources: selectedSources.length > 0 ? [...selectedSources] : ["*"],
156160
document_types: ["*"],
157161
owners: ["*"],
158162
connector_types: ["*"],
@@ -192,6 +196,8 @@ export function KnowledgeFilterProvider({
192196
endCreateMode,
193197
queryOverride,
194198
setQueryOverride,
199+
selectedSources,
200+
setSelectedSources,
195201
};
196202

197203
return (

0 commit comments

Comments
 (0)