From 4ce0406437cb6d7bcf84db7482e5ad59178a4898 Mon Sep 17 00:00:00 2001 From: kavabunga Date: Mon, 8 Jan 2024 20:12:47 +0200 Subject: [PATCH] fix: fix error handling in shopping-cart MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Добавил проверки на наличие ожидаемой структуры ответа сервера для кейсов ошибок. В каких-то редких случаях приложение не загружалось при 500-ой ошибке api коризны пользователя. closes #232 --- src/contexts/cart-context.tsx | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/src/contexts/cart-context.tsx b/src/contexts/cart-context.tsx index 78b06bfa..a765c477 100644 --- a/src/contexts/cart-context.tsx +++ b/src/contexts/cart-context.tsx @@ -114,7 +114,10 @@ export const CartProvider: React.FC = ({ children }) => { }) .catch((error) => { setError((prev) => { - return { ...prev, loadCartData: error.errors[0].detail }; + return { + ...prev, + loadCartData: error.errors?.[0]?.detail || 'Ошибка загрузки корзины покупок', + }; }); }) .finally(() => { @@ -140,7 +143,10 @@ export const CartProvider: React.FC = ({ children }) => { }) .catch((error) => { setError((prev) => { - return { ...prev, updateCart: error.errors[0].detail }; + return { + ...prev, + updateCart: error.errors?.[0]?.detail || 'Ошибка обновления корзины покупок', + }; }); }) .finally(() => { @@ -154,7 +160,11 @@ export const CartProvider: React.FC = ({ children }) => { .catch((error) => { if (error?.errors) { setError((prev) => { - return { ...prev, deleteCart: error.errors[0]?.detail }; + return { + ...prev, + deleteCart: + error.errors[0]?.detail || 'Ошибка удаления товара из корзины покупок', + }; }); } }) @@ -172,9 +182,12 @@ export const CartProvider: React.FC = ({ children }) => { return { ...prev, clearCart: message }; }); }) - .catch(({ errors }) => { + .catch((error) => { setError((prev) => { - return { ...prev, clearCart: errors }; + return { + ...prev, + clearCart: error.errors || 'Ошибка очистки корзины покупок', + }; }); }); };