import React, { useState } from "react"; import { api } from "@/src/utils/api"; import { Button } from "@/src/components/ui/button"; import { Edit } from "lucide-react"; import { AutomationForm } from "./automationForm"; import { AutomationExecutionsTable } from "./AutomationExecutionsTable"; import { AutomationFailureBanner } from "./AutomationFailureBanner"; import { type AutomationDomain, JobConfigState, type TriggerEventSource, } from "@langfuse/shared"; import { TabsBar, TabsBarContent, TabsBarList, TabsBarTrigger, } from "@/src/components/ui/tabs-bar"; import { type FilterState } from "@langfuse/shared"; import Header from "@/src/components/layouts/header"; import { SettingsTableCard } from "@/src/components/layouts/settings-table-card"; import { DeleteAutomationButton } from "./DeleteAutomationButton"; import { useQueryParam, StringParam, withDefault } from "use-query-params"; interface AutomationDetailsProps { projectId: string; automationId: string; onEditSuccess?: () => void; onEdit?: (automation: AutomationDomain) => void; onDelete?: () => void; } export const AutomationDetails: React.FC = ({ projectId, automationId, onEditSuccess, onEdit, onDelete, }) => { const [isEditing, setIsEditing] = useState(false); const [activeTab, setActiveTab] = useQueryParam( "tab", withDefault(StringParam, "executions"), ); const { data: automation, isLoading } = api.automations.getAutomation.useQuery( { projectId, automationId, }, { enabled: !!projectId && !!automationId, }, ); const handleEdit = () => { if (onEdit && automation) { onEdit(automation); } else { setIsEditing(true); } }; const handleCancelEdit = () => { setIsEditing(false); }; const handleSaveEdit = () => { setIsEditing(false); onEditSuccess?.(); }; if (isLoading) { return (
Loading automation details...
); } if (!automation) { return (
Automation not found.
); } const automationForForm: AutomationDomain = { id: automation.id, name: automation.name, trigger: { ...automation.trigger, eventSource: automation.trigger.eventSource as TriggerEventSource, filter: automation.trigger.filter as FilterState, eventActions: automation.trigger.eventActions, }, action: automation.action, }; return (
{isEditing ? ( ) : ( <>
} /> Execution History Configuration )} ); };