From 24ec2bd299e0b0111470d34d40cdf335e6abb817 Mon Sep 17 00:00:00 2001 From: Deon Sanchez <69873175+deon-sanchez@users.noreply.github.com> Date: Mon, 25 Aug 2025 13:09:47 -0600 Subject: [PATCH] refactor: Add create knowledge button (#9520) * refactor: Simplify KnowledgeBaseEmptyState component and integrate handleCreateKnowledge function into KnowledgeBasesTab - Refactored KnowledgeBaseEmptyState to accept handleCreateKnowledge as a prop, removing internal logic for flow creation. - Updated KnowledgeBasesTab to implement handleCreateKnowledge, enhancing the flow creation process and improving component interaction. * [autofix.ci] apply automated fixes --------- Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> --- .../components/KnowledgeBaseEmptyState.tsx | 37 +++------------- .../components/KnowledgeBasesTab.tsx | 42 ++++++++++++++++++- 2 files changed, 46 insertions(+), 33 deletions(-) diff --git a/src/frontend/src/pages/MainPage/pages/filesPage/components/KnowledgeBaseEmptyState.tsx b/src/frontend/src/pages/MainPage/pages/filesPage/components/KnowledgeBaseEmptyState.tsx index de7e38431..655e0680b 100644 --- a/src/frontend/src/pages/MainPage/pages/filesPage/components/KnowledgeBaseEmptyState.tsx +++ b/src/frontend/src/pages/MainPage/pages/filesPage/components/KnowledgeBaseEmptyState.tsx @@ -1,38 +1,11 @@ -import { useParams } from "react-router-dom"; import ForwardedIconComponent from "@/components/common/genericIconComponent"; import { Button } from "@/components/ui/button"; -import { useCustomNavigate } from "@/customization/hooks/use-custom-navigate"; -import { track } from "@/customization/utils/analytics"; -import useAddFlow from "@/hooks/flows/use-add-flow"; -import useFlowsManagerStore from "@/stores/flowsManagerStore"; -import { useFolderStore } from "@/stores/foldersStore"; -import { updateIds } from "@/utils/reactflowUtils"; - -const KnowledgeBaseEmptyState = () => { - const examples = useFlowsManagerStore((state) => state.examples); - const addFlow = useAddFlow(); - const navigate = useCustomNavigate(); - const { folderId } = useParams(); - const myCollectionId = useFolderStore((state) => state.myCollectionId); - - const folderIdUrl = folderId ?? myCollectionId; - - const handleCreateKnowledge = async () => { - const knowledgeBasesExample = examples.find( - (example) => example.name === "Knowledge Ingestion", - ); - - if (knowledgeBasesExample && knowledgeBasesExample.data) { - updateIds(knowledgeBasesExample.data); - addFlow({ flow: knowledgeBasesExample }).then((id) => { - navigate(`/flow/${id}/folder/${folderIdUrl}`); - }); - track("New Flow Created", { - template: `${knowledgeBasesExample.name} Template`, - }); - } - }; +const KnowledgeBaseEmptyState = ({ + handleCreateKnowledge, +}: { + handleCreateKnowledge: () => void; +}) => { return (
diff --git a/src/frontend/src/pages/MainPage/pages/filesPage/components/KnowledgeBasesTab.tsx b/src/frontend/src/pages/MainPage/pages/filesPage/components/KnowledgeBasesTab.tsx index b157004bd..cd9f0c51f 100644 --- a/src/frontend/src/pages/MainPage/pages/filesPage/components/KnowledgeBasesTab.tsx +++ b/src/frontend/src/pages/MainPage/pages/filesPage/components/KnowledgeBasesTab.tsx @@ -5,7 +5,10 @@ import type { } from "ag-grid-community"; import type { AgGridReact } from "ag-grid-react"; import { useRef, useState } from "react"; +import { useParams } from "react-router-dom"; +import ForwardedIconComponent from "@/components/common/genericIconComponent"; import TableComponent from "@/components/core/parameterRenderComponent/components/tableComponent"; +import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import Loading from "@/components/ui/loading"; import { useDeleteKnowledgeBase } from "@/controllers/API/queries/knowledge-bases/use-delete-knowledge-base"; @@ -13,8 +16,14 @@ import { type KnowledgeBaseInfo, useGetKnowledgeBases, } from "@/controllers/API/queries/knowledge-bases/use-get-knowledge-bases"; +import { useCustomNavigate } from "@/customization/hooks/use-custom-navigate"; +import { track } from "@/customization/utils/analytics"; +import useAddFlow from "@/hooks/flows/use-add-flow"; import DeleteConfirmationModal from "@/modals/deleteConfirmationModal"; import useAlertStore from "@/stores/alertStore"; +import useFlowsManagerStore from "@/stores/flowsManagerStore"; +import { useFolderStore } from "@/stores/foldersStore"; +import { updateIds } from "@/utils/reactflowUtils"; import { cn } from "@/utils/utils"; import { createKnowledgeBaseColumns } from "../config/knowledgeBaseColumns"; import KnowledgeBaseEmptyState from "./KnowledgeBaseEmptyState"; @@ -47,6 +56,13 @@ const KnowledgeBasesTab = ({ setSuccessData: state.setSuccessData, })); + const examples = useFlowsManagerStore((state) => state.examples); + const addFlow = useAddFlow(); + const navigate = useCustomNavigate(); + const { folderId } = useParams(); + const myCollectionId = useFolderStore((state) => state.myCollectionId); + const folderIdUrl = folderId ?? myCollectionId; + const [isDeleteModalOpen, setIsDeleteModalOpen] = useState(false); const [knowledgeBaseToDelete, setKnowledgeBaseToDelete] = useState(null); @@ -119,6 +135,22 @@ const KnowledgeBasesTab = ({ } }; + const handleCreateKnowledge = async () => { + const knowledgeBasesExample = examples.find( + (example) => example.name === "Knowledge Ingestion", + ); + + if (knowledgeBasesExample && knowledgeBasesExample.data) { + updateIds(knowledgeBasesExample.data); + addFlow({ flow: knowledgeBasesExample }).then((id) => { + navigate(`/flow/${id}/folder/${folderIdUrl}`); + }); + track("New Flow Created", { + template: `${knowledgeBasesExample.name} Template`, + }); + } + }; + const clearSelection = () => { setQuantitySelected(0); setSelectedFiles([]); @@ -142,7 +174,9 @@ const KnowledgeBasesTab = ({ } if (knowledgeBases.length === 0) { - return ; + return ( + + ); } return ( @@ -159,6 +193,12 @@ const KnowledgeBasesTab = ({ onChange={(event) => setQuickFilterText(event.target.value)} />
+