Implemented cart hydration and refactored paynow flow
continuous-integration/drone/pr Build is passing

This commit is contained in:
Khwezi Mngoma
2026-06-15 16:42:09 +02:00
parent 11e0176e40
commit 7199a6651b
7 changed files with 185 additions and 55 deletions
@@ -2,6 +2,7 @@
using LiteCharms.Features.MidrandBooks.AuthorBooks;
using LiteCharms.Features.MidrandBooks.Authors;
using LiteCharms.Features.MidrandBooks.Categories;
using LiteCharms.Features.MidrandBooks.Payments;
using LiteCharms.Features.MidrandBooks.Products;
using LiteCharms.Features.MidrandBooks.Products.Models;
using LiteCharms.Features.Models;
@@ -15,6 +16,9 @@ public partial class Home : ComponentBase
[Inject] private AuthorService AuthorService { get; set; } = default!;
[Inject] private CategoryService CategoryService { get; set; } = default!;
[Inject] private NavigationManager Navigation { get; set; } = default!;
[Inject] private HydrationService HydrationService { get; set; } = default!;
[Inject] private CancellationToken CancellationToken { get; set; } = default!;
[Inject] private CartService CartService { get; set; } = default!;
[SupplyParameterFromQuery(Name = "q")] public string? SharedSearchQuery { get; set; }
[SupplyParameterFromQuery] public long? AuthorId { get; set; }
@@ -95,6 +99,17 @@ public partial class Home : ComponentBase
private bool HasMoreItems => FilteredData.Count() > VisibleCount;
protected override async Task OnInitializedAsync() => await CartService.LoadCartFromStorageAsync();
protected override async Task OnAfterRenderAsync(bool firstRender)
{
if (firstRender == false && HydrationService.CartHydrated == false)
{
await HydrationService.EnsureCustomerExistsAsync(CancellationToken);
await HydrationService.RehydrateCartFromPendingOrderAsync(CancellationToken);
}
}
protected override async Task OnParametersSetAsync() => await LoadCatalogDataAsync();
private async Task LoadCatalogDataAsync()