diff --git a/frontend/src/app/settings/page.tsx b/frontend/src/app/settings/page.tsx index fd155c31..c2c4fce2 100644 --- a/frontend/src/app/settings/page.tsx +++ b/frontend/src/app/settings/page.tsx @@ -17,7 +17,6 @@ import { import { Checkbox } from "@/components/ui/checkbox"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; -import { Switch } from "@/components/ui/switch"; import { useAuth } from "@/contexts/auth-context"; import { useTask } from "@/contexts/task-context"; @@ -90,10 +89,6 @@ function KnowledgeSourcesPage() { const [langflowEditUrl, setLangflowEditUrl] = useState(""); const [publicLangflowUrl, setPublicLangflowUrl] = useState(""); - // Knowledge Ingest settings - const [ocrEnabled, setOcrEnabled] = useState(false); - const [pictureDescriptionsEnabled, setPictureDescriptionsEnabled] = - useState(false); // Fetch settings from backend const fetchSettings = useCallback(async () => { @@ -388,7 +383,7 @@ function KnowledgeSourcesPage() { } }, [tasks, prevTasks]); - const handleEditInLangflow = () => { + const handleEditInLangflow = (targetFlowId: string, closeDialog: () => void) => { const derivedFromWindow = typeof window !== "undefined" ? `${window.location.protocol}//${window.location.hostname}:7860` @@ -398,21 +393,39 @@ function KnowledgeSourcesPage() { derivedFromWindow || "http://localhost:7860" ).replace(/\/$/, ""); - const computed = flowId ? `${base}/flow/${flowId}` : base; + const computed = targetFlowId ? `${base}/flow/${targetFlowId}` : base; const url = langflowEditUrl || computed; window.open(url, "_blank"); + closeDialog(); // Close immediately after opening Langflow }; - const handleRestoreFlow = () => { + const handleRestoreFlow = (closeDialog: () => void) => { fetch(`/api/reset-flow/retrieval`, { method: "POST", }) .then((response) => response.json()) .then((data) => { console.log(data); + closeDialog(); // Close after successful completion }) .catch((error) => { console.error("Error restoring flow:", error); + closeDialog(); // Close even on error (could show error toast instead) + }); + }; + + const handleRestoreAgentFlow = (closeDialog: () => void) => { + fetch(`/api/reset-flow/agent`, { + method: "POST", + }) + .then((response) => response.json()) + .then((data) => { + console.log(data); + closeDialog(); // Close after successful completion + }) + .catch((error) => { + console.error("Error restoring agent flow:", error); + closeDialog(); // Close even on error (could show error toast instead) }); }; @@ -466,12 +479,13 @@ function KnowledgeSourcesPage() { title="Edit Ingest flow in Langflow" description="You're entering Langflow. You can edit the Ingest flow and other underlying flows. Manual changes to components, wiring, or I/O can break this experience." confirmText="Proceed" - onConfirm={handleEditInLangflow} + onConfirm={(closeDialog) => handleEditInLangflow(flowId, closeDialog)} /> - + {/* Hidden for now */} + {/*
@@ -510,7 +524,7 @@ function KnowledgeSourcesPage() { />
- + */} {/* Agent Behavior Section */} @@ -523,44 +537,47 @@ function KnowledgeSourcesPage() { Adjust your retrieval agent flow
- +
+ Restore flow} + title="Restore default Agent flow" + description="This restores defaults and discards all custom settings and overrides. This can't be undone." + confirmText="Restore" + variant="destructive" + onConfirm={handleRestoreAgentFlow} + /> + + + + + + + Edit in Langflow + + } + title="Edit Agent flow in Langflow" + description="You're entering Langflow. You can edit the Agent flow and other underlying flows. Manual changes to components, wiring, or I/O can break this experience." + confirmText="Proceed" + onConfirm={(closeDialog) => handleEditInLangflow(flowId, closeDialog)} + /> +
diff --git a/frontend/src/components/confirmation-dialog.tsx b/frontend/src/components/confirmation-dialog.tsx index ae6801e9..c424e437 100644 --- a/frontend/src/components/confirmation-dialog.tsx +++ b/frontend/src/components/confirmation-dialog.tsx @@ -1,6 +1,6 @@ "use client" -import { ReactNode } from "react" +import { ReactNode, useState } from "react" import { Dialog, DialogContent, @@ -18,7 +18,7 @@ interface ConfirmationDialogProps { description: string confirmText?: string cancelText?: string - onConfirm: () => void + onConfirm: (closeDialog: () => void) => void onCancel?: () => void variant?: "default" | "destructive" } @@ -33,8 +33,20 @@ export function ConfirmationDialog({ onCancel, variant = "default" }: ConfirmationDialogProps) { + const [open, setOpen] = useState(false) + + const handleConfirm = () => { + const closeDialog = () => setOpen(false) + onConfirm(closeDialog) + } + + const handleCancel = () => { + onCancel?.() + setOpen(false) + } + return ( - + {trigger} @@ -48,13 +60,13 @@ export function ConfirmationDialog({