@page "/checkout" @inject OrderState OrderState @inject HttpClient HttpClient @inject IUriHelper UriHelper @inject IJSRuntime JSRuntime

Redirecting you...

Review order

Deliver to...

@functions { bool isSubmitting; [CascadingParameter] Task AuthenticationStateTask { get; set; } protected override async Task OnInitAsync() { var authState = await AuthenticationStateTask; if (!authState.User.Identity.IsAuthenticated) { // The server won't accept orders from unauthenticated users, so avoid // an error by making them log in at this point await LocalStorage.SetAsync(JSRuntime, "currentorder", OrderState.Order); UriHelper.NavigateTo("user/signin?redirectUri=/checkout", true); } // Try to recover any temporary saved order if (!OrderState.Order.Pizzas.Any()) { var savedOrder = await LocalStorage.GetAsync(JSRuntime, "currentorder"); if (savedOrder != null) { OrderState.ReplaceOrder(savedOrder); await LocalStorage.DeleteAsync(JSRuntime, "currentorder"); } else { // There's nothing check out - go to home UriHelper.NavigateTo(""); } } } async Task PlaceOrder() { isSubmitting = true; try { var newOrderId = await HttpClient.PostJsonAsync("orders", OrderState.Order); OrderState.ResetOrder(); UriHelper.NavigateTo($"myorders/{newOrderId}"); } finally { isSubmitting = false; } } }