import { Box, HStack, VStack } from '@chakra-ui/react';
import type { OrgListItemType, OrgType } from '@fastgpt/global/support/user/team/org/type';
import Avatar from '@fastgpt/web/components/common/Avatar';
import { useToggle } from 'ahooks';
import { useState } from 'react';
import IconButton from './IconButton';
import { useUserStore } from '@/web/support/user/useUserStore';
import { useRequest2 } from '@fastgpt/web/hooks/useRequest';
import { getOrgList } from '@/web/support/user/team/org/api';
import { getChildrenByOrg } from '@fastgpt/service/support/permission/org/controllers';
import { getOrgChildrenPath } from '@fastgpt/global/support/user/team/org/constant';
function OrgTreeNode({
org,
selectedOrg,
setSelectedOrg,
index = 0,
movingOrg
}: {
org: OrgListItemType;
selectedOrg?: OrgListItemType;
setSelectedOrg: (org?: OrgListItemType) => void;
index?: number;
movingOrg: OrgListItemType;
}) {
const [isExpanded, toggleIsExpanded] = useToggle(index === 0);
const [canBeExpanded, setCanBeExpanded] = useState(true);
const { data: orgs = [], runAsync: getOrgs } = useRequest2(() =>
getOrgList({ orgId: org._id, withPermission: false })
);
const onClickExpand = async () => {
const data = await getOrgs();
if (data.length < 1) {
setCanBeExpanded(false);
}
toggleIsExpanded.toggle();
};
if (org._id === movingOrg._id) {
return <>>;
}
return (
setSelectedOrg(undefined)
}
: {
onClick: () => setSelectedOrg(org)
})}
>
{
onClickExpand();
e.stopPropagation();
}}
/>
setSelectedOrg(org)}
cursor={'pointer'}
borderRadius={'xs'}
>
{org.name}
{isExpanded &&
orgs.length > 0 &&
orgs.map((child) => (
))}
);
}
function OrgTree({
selectedOrg,
setSelectedOrg,
movingOrg
}: {
selectedOrg?: OrgListItemType;
setSelectedOrg: (org?: OrgListItemType) => void;
movingOrg: OrgListItemType;
}) {
const { userInfo } = useUserStore();
const root: OrgListItemType = {
_id: '',
path: '',
pathId: '',
name: userInfo?.team.teamName || '',
avatar: userInfo?.team.avatar || ''
} as any;
return (
);
}
export default OrgTree;