From ac0cbc8c3119d11478fd96ebcc58adcd15f8d898 Mon Sep 17 00:00:00 2001 From: shats Date: Wed, 27 Aug 2025 19:23:19 +0700 Subject: [PATCH] =?UTF-8?q?feat:=20=D0=9F=D0=B5=D1=80=D0=B5=D0=BC=D0=B5?= =?UTF-8?q?=D1=81=D1=82=D0=B8=D1=82=D1=8C=20=D0=BB=D0=BE=D0=B3=D0=B8=D0=BA?= =?UTF-8?q?=D1=83=20=D0=BF=D0=BE=D0=B4=D0=B3=D1=80=D1=83=D0=B7=D0=BA=D0=B8?= =?UTF-8?q?=20=D0=B8=D0=BC=D0=B5=D0=BD=20ASN=20=D0=B8=D0=B7=20=D0=BA=D1=8D?= =?UTF-8?q?=D1=88=D0=B0/=D0=B2=D0=BD=D0=B5=D1=88=D0=BD=D0=B8=D1=85=20API?= =?UTF-8?q?=20=D0=B2=20useEffect=20=D0=BF=D0=BE=D1=81=D0=BB=D0=B5=20=D0=B2?= =?UTF-8?q?=D1=8B=D1=87=D0=B8=D1=81=D0=BB=D0=B5=D0=BD=D0=B8=D1=8F=20pagina?= =?UTF-8?q?tedItems=20=D0=B4=D0=BB=D1=8F=20=D1=83=D0=BB=D1=83=D1=87=D1=88?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=BF=D1=80=D0=BE=D0=B8=D0=B7=D0=B2?= =?UTF-8?q?=D0=BE=D0=B4=D0=B8=D1=82=D0=B5=D0=BB=D1=8C=D0=BD=D0=BE=D1=81?= =?UTF-8?q?=D1=82=D0=B8=20=D0=B8=20=D0=BA=D0=BE=D1=80=D1=80=D0=B5=D0=BA?= =?UTF-8?q?=D1=82=D0=BD=D0=BE=D1=81=D1=82=D0=B8=20=D0=BE=D1=82=D0=BE=D0=B1?= =?UTF-8?q?=D1=80=D0=B0=D0=B6=D0=B5=D0=BD=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/src/ASNsNewManager.jsx | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/frontend/src/ASNsNewManager.jsx b/frontend/src/ASNsNewManager.jsx index fd680d2..99f3b08 100644 --- a/frontend/src/ASNsNewManager.jsx +++ b/frontend/src/ASNsNewManager.jsx @@ -76,19 +76,7 @@ function ASNsNewManager() { })(); }, []); - // Подгружаем имена ASN из кэша/внешних API - useEffect(() => { - const visible = paginatedItems.map(i => i.asn); - visible.forEach(async (asn) => { - const cached = getAsnNameSync(asn); - if (cached !== null && typeof cached !== 'undefined') { - setAsnNameMap(prev => ({ ...prev, [asn]: cached })); - return; - } - const name = await getAsnName(asn); - if (name !== null) setAsnNameMap(prev => ({ ...prev, [asn]: name })); - }); - }, [JSON.stringify(paginatedItems)]); + // Подгружаем имена ASN из кэша/внешних API (эффект будет размещен ниже после определения paginatedItems) const renderCommunityBadge = (value) => { const v = String(value ?? '').trim(); @@ -382,6 +370,20 @@ function ASNsNewManager() { const totalPages = Math.max(1, Math.ceil(filtered.length / pageSize)); const paginatedItems = filtered.slice((currentPage - 1) * pageSize, (currentPage) * pageSize); + // Подгружаем имена ASN из кэша/внешних API (после вычисления paginatedItems) + useEffect(() => { + const visible = paginatedItems.map(i => i.asn); + visible.forEach(async (asn) => { + const cached = getAsnNameSync(asn); + if (cached !== null && typeof cached !== 'undefined') { + setAsnNameMap(prev => ({ ...prev, [asn]: cached })); + return; + } + const name = await getAsnName(asn); + if (name !== null) setAsnNameMap(prev => ({ ...prev, [asn]: name })); + }); + }, [JSON.stringify(paginatedItems)]); + // Для фильтра - список всех уникальных community const allCommunities = Array.from(new Set(items.map(i => String(i.community))));