pref: useScrollPagination support debounce and throttle. (#4355)

* pref: useScrollPagination support debounce and throttle.

* fix: useScrollPagination loading

* fix: isloading

* fix: org search path hide
This commit is contained in:
Finley Ge
2025-03-27 15:58:13 +08:00
committed by GitHub
parent 8b29aae238
commit e9f75c7e66
9 changed files with 68 additions and 87 deletions

View File

@@ -3,7 +3,6 @@ import { Box, Button, Flex, Grid, HStack, ModalBody, ModalFooter } from '@chakra
import type { GroupMemberRole } from '@fastgpt/global/support/permission/memberGroup/constant';
import Avatar from '@fastgpt/web/components/common/Avatar';
import MyIcon from '@fastgpt/web/components/common/Icon';
import type { IconNameType } from '@fastgpt/web/components/common/Icon/type';
import SearchInput from '@fastgpt/web/components/common/Input/SearchInput';
import MyModal from '@fastgpt/web/components/common/MyModal';
import { useRequest2 } from '@fastgpt/web/hooks/useRequest';
@@ -31,32 +30,32 @@ function OrgMemberManageModal({
onClose: () => void;
}) {
const { t } = useTranslation();
const [searchKey, setSearchKey] = useState('');
const {
data: allMembers,
ScrollData: MemberScrollData,
isLoading: isLoadingMembers
} = useScrollPagination(getTeamMembers, {
const { data: allMembers, ScrollData: MemberScrollData } = useScrollPagination(getTeamMembers, {
pageSize: 20,
params: {
withOrgs: true,
withPermission: false,
status: 'active'
}
status: 'active',
searchKey
},
throttleWait: 500,
debounceWait: 200,
refreshDeps: [searchKey]
});
const {
data: orgMembers,
ScrollData: OrgMemberScrollData,
isLoading: isLoadingOrgMembers
} = useScrollPagination(getTeamMembers, {
pageSize: 100000,
params: {
orgId: currentOrg._id,
withOrgs: false,
withPermission: false
const { data: orgMembers, ScrollData: OrgMemberScrollData } = useScrollPagination(
getTeamMembers,
{
pageSize: 100000,
params: {
orgId: currentOrg._id,
withOrgs: false,
withPermission: false
}
}
});
);
const [selected, setSelected] = useState<{ name: string; tmbId: string; avatar: string }[]>([]);
@@ -70,8 +69,6 @@ function OrgMemberManageModal({
);
}, [orgMembers]);
const [searchKey, setSearchKey] = useState('');
const { run: onUpdate, loading: isLoadingUpdate } = useRequest2(
() => {
return putUpdateOrgMembers({
@@ -147,7 +144,7 @@ function OrgMemberManageModal({
setSearchKey(e.target.value);
}}
/>
<MemberScrollData mt={3} flexGrow="1" overflow={'auto'} isLoading={isLoadingMembers}>
<MemberScrollData mt={3} flexGrow="1" overflow={'auto'}>
{allMembers.map((member) => {
return (
<MemberItemCard
@@ -163,12 +160,7 @@ function OrgMemberManageModal({
</MemberScrollData>
</Flex>
<Flex flexDirection="column" p="4" overflowY="auto" overflowX="hidden">
<OrgMemberScrollData
mt={3}
flexGrow="1"
overflow={'auto'}
isLoading={isLoadingOrgMembers}
>
<OrgMemberScrollData mt={3} flexGrow="1" overflow={'auto'}>
<Box mt={2}>{`${t('common:chosen')}:${selected.length}`}</Box>
{selected.map((member) => {
return (