| import { useParams } from "react-router"; | |
| import React from "react"; | |
| import posthog from "posthog-js"; | |
| import { AgentControlBar } from "./agent-control-bar"; | |
| import { AgentStatusBar } from "./agent-status-bar"; | |
| import { SecurityLock } from "./security-lock"; | |
| import { useUserConversation } from "#/hooks/query/use-user-conversation"; | |
| import { ConversationCard } from "../conversation-panel/conversation-card"; | |
| import { DownloadModal } from "#/components/shared/download-modal"; | |
| interface ControlsProps { | |
| setSecurityOpen: (isOpen: boolean) => void; | |
| showSecurityLock: boolean; | |
| } | |
| export function Controls({ setSecurityOpen, showSecurityLock }: ControlsProps) { | |
| const params = useParams(); | |
| const { data: conversation } = useUserConversation( | |
| params.conversationId ?? null, | |
| ); | |
| const [downloading, setDownloading] = React.useState(false); | |
| const handleDownloadWorkspace = () => { | |
| posthog.capture("download_workspace_button_clicked"); | |
| setDownloading(true); | |
| }; | |
| return ( | |
| <div className="flex items-center justify-between"> | |
| <div className="flex items-center gap-2"> | |
| <AgentControlBar /> | |
| <AgentStatusBar /> | |
| {showSecurityLock && ( | |
| <SecurityLock onClick={() => setSecurityOpen(true)} /> | |
| )} | |
| </div> | |
| <ConversationCard | |
| variant="compact" | |
| onDownloadWorkspace={handleDownloadWorkspace} | |
| title={conversation?.title ?? ""} | |
| lastUpdatedAt={conversation?.created_at ?? ""} | |
| selectedRepository={conversation?.selected_repository ?? null} | |
| status={conversation?.status} | |
| /> | |
| <DownloadModal | |
| initialPath="" | |
| onClose={() => setDownloading(false)} | |
| isOpen={downloading} | |
| /> | |
| </div> | |
| ); | |
| } | |