From cdebd2d812699eae6e5f9df4dbea0c1db376780b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wojciech=20Mi=C5=9Bta?= Date: Thu, 7 Oct 2021 12:28:29 +0200 Subject: [PATCH] Change conditional prop checking to filtering --- src/components/CardMenu/CardMenu.tsx | 20 +++++++------------- 1 file changed, 7 insertions(+), 13 deletions(-) diff --git a/src/components/CardMenu/CardMenu.tsx b/src/components/CardMenu/CardMenu.tsx index a9128c7cf5e..a45cde1d17c 100644 --- a/src/components/CardMenu/CardMenu.tsx +++ b/src/components/CardMenu/CardMenu.tsx @@ -98,27 +98,21 @@ const CardMenu: React.FC = props => { prevOpen.current = open; }, [open]); - const [loadingMenuItemIndex, setLoadingMenuItemIndex] = useState( - undefined - ); - useEffect(() => { - const loadingMenuItem = menuItems[loadingMenuItemIndex]; + const hasAnyItemsLoadingOrWithError = menuItems + ?.filter(({ withLoading }) => withLoading) + ?.some(({ loading, hasError }) => loading || hasError); - if (!!loadingMenuItem) { - if (!loadingMenuItem.loading && !loadingMenuItem.hasError) { - setOpen(false); - } + if (!hasAnyItemsLoadingOrWithError) { + setOpen(false); } - }, [loadingMenuItemIndex, menuItems]); + }, [menuItems]); const handleMenuClick = (index: number) => { const selectedItem = menuItems[index]; selectedItem.onSelect(); - if (selectedItem.withLoading) { - setLoadingMenuItemIndex(index); - } else { + if (!selectedItem.withLoading) { setOpen(false); } };