Client: InfoPanel: Groups: Add request cancelling to prevent adding members from previous selected group

This commit is contained in:
Aleksandr Lushkin 2024-08-08 18:45:38 +02:00
parent 3be9024555
commit b2e08f0c2a

View File

@ -55,6 +55,7 @@ const Groups = ({
const [groupMembers, setGroupMembers] = useState(null); const [groupMembers, setGroupMembers] = useState(null);
const [total, setTotal] = useState(0); const [total, setTotal] = useState(0);
const abortControllerRef = useRef(new AbortController());
const startLoader = useRef(null); const startLoader = useRef(null);
const loaderTimeout = useRef(null); const loaderTimeout = useRef(null);
@ -70,13 +71,18 @@ const Groups = ({
const loadNextPage = async (startIndex) => { const loadNextPage = async (startIndex) => {
try { try {
abortControllerRef.current = new AbortController();
const pageCount = 100; const pageCount = 100;
const filter = AccountsFilter.getDefault(); const filter = AccountsFilter.getDefault();
filter.group = groupId; filter.group = groupId;
filter.page = startIndex / pageCount; filter.page = startIndex / pageCount;
filter.pageCount = pageCount; filter.pageCount = pageCount;
const res = await api.people.getUserList(filter); const res = await api.people.getUserList(
filter,
abortControllerRef.current.signal,
);
const membersWithoutManager = groupManager const membersWithoutManager = groupManager
? res.items.filter((item) => item.id !== groupManager.id) ? res.items.filter((item) => item.id !== groupManager.id)
@ -137,6 +143,10 @@ const Groups = ({
if (group) { if (group) {
loadNextPage(0); loadNextPage(0);
} }
return () => {
abortControllerRef.current.abort();
};
}, [group]); }, [group]);
useEffect(() => { useEffect(() => {