import { useQuery, useQueryClient } from "@tanstack/react-query"; import { isUuidLike } from "@paperclipai/shared"; import { agentsApi } from "../api/agents"; import { projectsApi } from "../api/projects"; import { queryKeys } from "../lib/queryKeys"; import { Link, useSearchParams } from "../lib/router"; import { AllowedProjectsEditor } from "./AllowedProjectsEditor"; import { Button } from "./ui/button"; export function AgentProjectAccessSettings({ agent }: { agent: { id: string; companyId: string; name: string; urlKey?: string } }) { const client = useQueryClient(); const [params] = useSearchParams(); const fromTask = params.get("fromTask"); const access = useQuery({ queryKey: queryKeys.agents.projectAccess(agent.id), queryFn: () => agentsApi.projectAccess(agent.id) }); const projects = useQuery({ queryKey: queryKeys.projects.list(agent.companyId), queryFn: () => projectsApi.list(agent.companyId) }); if (access.error || projects.error) return

Couldn’t load project access.

; if (!access.data || !projects.data) return

Loading project access…

; return
{ const saved = await agentsApi.addProjectAccess(agent.id, projectIds); client.setQueryData(queryKeys.agents.projectAccess(agent.id), saved); await Promise.all([ client.invalidateQueries({ queryKey: queryKeys.agents.detail(agent.id) }), ...(agent.urlKey ? [client.invalidateQueries({ queryKey: queryKeys.agents.detail(agent.urlKey) })] : []), client.invalidateQueries({ queryKey: queryKeys.agents.list(agent.companyId) }), client.invalidateQueries({ queryKey: ["issues"] }), ]); }} /> {fromTask && isUuidLike(fromTask) && }
; }