From 8e767443f080d184e60a5fec6be92a8b725913d1 Mon Sep 17 00:00:00 2001 From: Fringg Date: Fri, 24 Apr 2026 16:22:20 +0300 Subject: [PATCH] =?UTF-8?q?fix:=20load=20filters=20independently=20?= =?UTF-8?q?=E2=80=94=20one=20API=20failure=20no=20longer=20blocks=20others?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Promise.all was used for tariffs, promo groups, campaigns, and partners. If any one endpoint failed (e.g., partners not configured), all four setCampaigns/setPartners/etc calls were skipped. Now each loads independently. --- src/pages/AdminBulkActions.tsx | 35 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 18 deletions(-) diff --git a/src/pages/AdminBulkActions.tsx b/src/pages/AdminBulkActions.tsx index e091aed..ff67cb0 100644 --- a/src/pages/AdminBulkActions.tsx +++ b/src/pages/AdminBulkActions.tsx @@ -1563,25 +1563,24 @@ export default function AdminBulkActions() { loadUsers(); }, [loadUsers]); - // Load tariffs, promo groups, campaigns, and partners once + // Load tariffs, promo groups, campaigns, and partners once (independent — one failure won't block others) useEffect(() => { - const load = async () => { - try { - const [tariffData, pgData, campaignData, partnerData] = await Promise.all([ - tariffsApi.getTariffs(true), - promocodesApi.getPromoGroups({ limit: 200 }), - campaignsApi.getCampaigns(true, 0, 200), - partnerApi.getPartners({ limit: 200 }), - ]); - setTariffs(tariffData.tariffs); - setPromoGroups(pgData.items); - setCampaigns(campaignData.campaigns); - setPartners(partnerData.items); - } catch { - // silently fail - } - }; - load(); + tariffsApi + .getTariffs(true) + .then((d) => setTariffs(d.tariffs)) + .catch(() => {}); + promocodesApi + .getPromoGroups({ limit: 200 }) + .then((d) => setPromoGroups(d.items)) + .catch(() => {}); + campaignsApi + .getCampaigns(true, 0, 200) + .then((d) => setCampaigns(d.campaigns)) + .catch(() => {}); + partnerApi + .getPartners({ limit: 200 }) + .then((d) => setPartners(d.items)) + .catch(() => {}); }, []); // ---- Handlers ----