import { ScrollView, View } from "react-native";
import {
useProjects,
useWorkspaces,
useAgents,
useAgent,
type AgentRef,
type WorkspaceRef,
type ProjectRef,
type PluginSidebarViewProps,
} from "@getpaseo/plugin/client";
import { AgentRow, ProjectHeading, WorkspaceRow } from "./rows";
const indent = { paddingLeft: 12 };
function AgentTree({ reference, view }: { reference: AgentRef; view: PluginSidebarViewProps }) {
const agent = useAgent(reference);
const children = useAgents({
where: (item) =>
item.parentAgent?.key === reference.key && item.workspace.key === agent?.workspace.key,
orderBy: "createdAt",
});
return (
{children.map((child) => (
))}
);
}
function RootWithParent({
reference,
parent,
workspace,
view,
}: {
reference: AgentRef;
parent: AgentRef;
workspace: WorkspaceRef;
view: PluginSidebarViewProps;
}) {
const parents = useAgents({
where: (item) => item.ref.key === parent.key && item.workspace.key === workspace.key,
});
return parents.length > 0 ? null : ;
}
function Root({
reference,
workspace,
view,
}: {
reference: AgentRef;
workspace: WorkspaceRef;
view: PluginSidebarViewProps;
}) {
const agent = useAgent(reference);
if (!agent) return null;
return agent.parentAgent ? (
) : (
);
}
function Workspace({ reference, view }: { reference: WorkspaceRef; view: PluginSidebarViewProps }) {
const agents = useAgents({
where: (item) => item.workspace.key === reference.key,
orderBy: "createdAt",
});
return (
{agents.map((agent) => (
))}
);
}
function Project({ reference, view }: { reference: ProjectRef; view: PluginSidebarViewProps }) {
const workspaces = useWorkspaces({
where: (item) => item.project.key === reference.key,
orderBy: "name",
});
return (
{workspaces.map((workspace) => (
))}
);
}
export function Nested(view: PluginSidebarViewProps) {
const projects = useProjects({ orderBy: "displayName" });
return (
{projects.map((reference) => (
))}
);
}