diff --git a/src/WebApp/Components/Layout/CartMenu.razor b/src/WebApp/Components/Layout/CartMenu.razor index 72bab91..fe5f9c2 100644 --- a/src/WebApp/Components/Layout/CartMenu.razor +++ b/src/WebApp/Components/Layout/CartMenu.razor @@ -17,6 +17,7 @@ @code { IDisposable? basketStateSubscription; private IReadOnlyCollection? basketItems; + private bool? basketUnavailable; [CascadingParameter] public required HttpContext HttpContext { get; set; } @@ -30,14 +31,7 @@ // component to re-render with the updated data. basketStateSubscription = Basket.NotifyOnChange(EventCallback.Factory.Create(this, UpdateBasketItemsAsync)); - try - { - await UpdateBasketItemsAsync(); - } - catch (HttpRequestException ex) when (ex.StatusCode == HttpStatusCode.Unauthorized) - { - await LogOutService.LogOutAsync(HttpContext); - } + await UpdateBasketItemsAsync(); } public void Dispose() @@ -47,6 +41,17 @@ private async Task UpdateBasketItemsAsync() { - basketItems = await Basket.GetBasketItemsAsync(); + try + { + basketItems = await Basket.GetBasketItemsAsync(); + } + catch (HttpRequestException ex) when (ex.StatusCode == HttpStatusCode.Unauthorized) + { + await LogOutService.LogOutAsync(HttpContext); + } + catch + { + basketUnavailable = true; + } } } diff --git a/src/WebApp/Components/Pages/Cart/CartPage.razor b/src/WebApp/Components/Pages/Cart/CartPage.razor index 476c318..5909dec 100644 --- a/src/WebApp/Components/Pages/Cart/CartPage.razor +++ b/src/WebApp/Components/Pages/Cart/CartPage.razor @@ -11,7 +11,13 @@ Shopping bag
- @if (basketItems is null) + @if (basketUnavailable == true) + { +

+ Your shopping bag is currently unavailable. Please try again later. +

+ } + else if (basketItems is null) {

Loading...

} @@ -86,6 +92,7 @@ @code { private IReadOnlyCollection? basketItems; + private bool? basketUnavailable; [SupplyParameterFromForm] public int? UpdateQuantityId { get; set; } @@ -95,7 +102,14 @@ protected override async Task OnInitializedAsync() { - basketItems = await Basket.GetBasketItemsAsync(); + try + { + basketItems = await Basket.GetBasketItemsAsync(); + } + catch + { + basketUnavailable = true; + } } private decimal? TotalPrice => basketItems?.Sum(i => i.Quantity * i.UnitPrice); @@ -112,7 +126,15 @@ { var id = UpdateQuantityId!.Value; var quantity = UpdateQuantityValue!.Value; - await Basket.SetQuantityAsync(id, quantity); - basketItems = await Basket.GetBasketItemsAsync(); + + try + { + await Basket.SetQuantityAsync(id, quantity); + basketItems = await Basket.GetBasketItemsAsync(); + } + catch + { + basketUnavailable = true; + } } } diff --git a/src/WebApp/Components/Pages/Item/ItemPage.razor b/src/WebApp/Components/Pages/Item/ItemPage.razor index f4fa144..0dc54dd 100644 --- a/src/WebApp/Components/Pages/Item/ItemPage.razor +++ b/src/WebApp/Components/Pages/Item/ItemPage.razor @@ -38,7 +38,7 @@ Add to shopping bag } - else + else if (!isLoggedIn) {