File size: 1,799 Bytes
246d201
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
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>
  );
}